正则表达式只允许这种格式 123-456-7890

Regex to allow only this format 123-456-7890

我正在寻找一个正则表达式来只接受这个数字而不接受任何其他格式。

123-456-7890

我试过了,但也接受 diff 格式。

Regex regexPhoneNumber = new Regex(@"^\(?([0-9]{3})\)?[-. ]?([0-9]{3})[-. ]?([0-9]{4})$");

您可以使用

Regex regexPhoneNumber = new Regex(@"\A[0-9]{3}-[0-9]{3}-[0-9]{4}\z");

它将接受一个以 3 位数字开头的字符串,然后是 -,然后是 3 位数字,-,然后是 4 位数字,紧随其后的是字符串位置的末尾。

详情:

  • \A - 字符串开头
  • [0-9]{3} - 3 个 ASCII 数字
  • - - 一个连字符
  • [0-9]{3} - 3 位数
  • - - 又是一个连字符
  • [0-9]{4} - 4 位数
  • \z - 字符串的末尾(后面不能有最后的换行符,$ 锚点就是这种情况)。

请注意,如果您想使用 \d 而不是 [0-9] 来缩短模式,并且仍然仅匹配 ASCII 数字,请将 RegexOptions.ECMAScript 选项传递给 Regex 对象。