我有一个正则表达式,它匹配以下数字。
8702431273
973-882-9444转6114
1-223-332-2232
然而,它并不匹配。
(+1) 623-975-5296
605-367-7321
我如何修改它才能接受这些。
^(?:1(?:[. -])?)?(?:\((?=\d{3}\)))?([2-9]\d{2})(?:(?<=\(\d{3})\))? ?(?:(?<=\d{3})[.-])?([2-9]\d{2})[. -]?(\d{4})(?: (?i:ext)\.? ?(\d{1,5}))?$发布于 2011-12-10 05:49:00
在我看来,您可以简单地替换开头的这一部分:
^(?:1(?:[. -])?)?有了这个:
^(?:\(?\+?1\)?(?:[. -])?)?或者,如果您想严格使用括号匹配:
^(?:(?:\((?=.?1\)))?\+?1\)?(?:[. -])?)?发布于 2011-12-10 06:24:50
我会将下一部分加入到您的regexp中,以匹配其他电话:
(?:\(\+\d\)\s)它的意思是带数字的加号。如果括号内可以有更多的数字或后面有更多的空格,则对其进行调整。最终的regexp可能是这样的。
^(?:(?:1(?:[. -])?)?(?:\((?=\d{3}\)))?|(?:\(\+\d\)\s))?([2-9]\d{2})(?:^(?<=\(\d{3})\))? ?(?:(?<=\d{3})[.-])?([2-9]\d{2})[. -]?(\d{4})(?: (?i:ext)\.? ?(\d{1,5}))?$我将我为适应新电话号码而更改的部分分成几行:
^
(?:
(?:1(?:[. -])?)?
(?:\((?=\d{3}\)))?
|
(?:\(\+\d\)\s)
)?
([2-9]\d{2})(?:^(?<=\(\d{3})\))? ?(?:(?<=\d{3})[.-])?([2-9]\d{2})[. -]?(\d{4})(?: (?i:ext)\.? ?(\d{1,5}))?$在我的测试中,它与您的帖子的五个电话一起工作。
https://stackoverflow.com/questions/8451980
复制相似问题