1

我有一个输入字符串(“我的电话号码是 860-678 - 2345”)。从输入字符串中,我需要使用正则表达式验证电话号码。

我正在使用以下模式,但如果电话号码中包含空格,则它不起作用。

[(]?[2-9]{1}[0-9]{2}[)-. ,]?[2-9]{1}[0-9]{2}[-. ,]?[0-9]{4}

谢谢。

4

4 回答 4

1

以下正则表达式:

(\([2-9]\d\d\)|[2-9]\d\d) ?[-.,]? ?[2-9]\d\d ?[-.,]? ?\d{4}

匹配以下所有内容:

860-678-2345
(860) 678-2345
(860) 678 - 2345

可能还有很多其他的。分解:

  • (\([2-9]\d\d\)|[2-9]\d\d) - Matches the first part of the number with or without brackets
  •  ?[-.,]? ? - A hyphen, period (or full stop to us Brits) or a comma, with or without surrounding spaces.
  • [2-9]\d\d - Matches the second part of the number.
  • \d{4} - Matches the final part of the number.

\d\d and [0-9]{2} are equivalent; the former is just slightly shorter so improves readability. Likewise, [2-9] and [2-9]{1} are equivalent; the {1} just means "one instance of the preceeding pattern", which is a given anyway.

于 2013-09-19T22:11:31.360 回答
0

这可能会帮助您:

(?\d{3})?-? *\d{3}-? *-?\d{4}

参考:正则表达式库

于 2014-09-15T05:16:44.853 回答
0

您可以在分隔字符之前和之后分别检查空格。

[(]?[2-9]{1}[0-9]{2}[ ]?[)-.,]?[ ]?[2-9]{1}[0-9]{2}[ ]?[-.,]?[ ]?[0-9]{4}

请记住,这实际上不会匹配括号,所以类似的东西(234-567, 1234会匹配。因此,如果您想要更严格的匹配,您将需要一个更复杂的正则表达式或使用其他代码验证。

于 2013-09-19T21:13:18.920 回答
0

最好的办法是首先去掉所有空白,然后,您可以使用您已完成的 RE 轻松验证您的号码。

于 2013-09-19T21:19:48.357 回答