我有一个输入字符串(“我的电话号码是 860-678 - 2345”)。从输入字符串中,我需要使用正则表达式验证电话号码。
我正在使用以下模式,但如果电话号码中包含空格,则它不起作用。
[(]?[2-9]{1}[0-9]{2}[)-. ,]?[2-9]{1}[0-9]{2}[-. ,]?[0-9]{4}
谢谢。
我有一个输入字符串(“我的电话号码是 860-678 - 2345”)。从输入字符串中,我需要使用正则表达式验证电话号码。
我正在使用以下模式,但如果电话号码中包含空格,则它不起作用。
[(]?[2-9]{1}[0-9]{2}[)-. ,]?[2-9]{1}[0-9]{2}[-. ,]?[0-9]{4}
谢谢。
以下正则表达式:
(\([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.
您可以在分隔字符之前和之后分别检查空格。
[(]?[2-9]{1}[0-9]{2}[ ]?[)-.,]?[ ]?[2-9]{1}[0-9]{2}[ ]?[-.,]?[ ]?[0-9]{4}
请记住,这实际上不会匹配括号,所以类似的东西(234-567, 1234
会匹配。因此,如果您想要更严格的匹配,您将需要一个更复杂的正则表达式或使用其他代码验证。
最好的办法是首先去掉所有空白,然后,您可以使用您已完成的 RE 轻松验证您的号码。