我有一个与以下数字匹配的正则表达式。
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}))?$
答案 0 :(得分:1)
在我看来,你可以在开头简单地替换这部分:
^(?:1(?:[. -])?)?
用这个:
^(?:\(?\+?1\)?(?:[. -])?)?
或者如果你想严格匹配括号:
^(?:(?:\((?=.?1\)))?\+?1\)?(?:[. -])?)?
答案 1 :(得分:1)
我会将下一部分合并到你的正则表达式以匹配其他电话:
(?:\(\+\d\)\s)
这意味着带有数字的加号。如果括号内可以有更多数字或者后面有更多空格,请调整它。最终的正则表达式可能是这样的。
^(?:(?: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}))?$
在我的测试中,它适用于你发布的五部电话。