【发布时间】:2021-11-29 07:13:47
【问题描述】:
我需要从文本中匹配并提取电话号码...这种格式的电话号码:
589-845-2889
(589)-845-2889
589.845.2889
589 845 2889
5898452889
(589) 845 2889
以下操作与上述匹配非常准确:
preg_match_all("/(\()?\d{3}(?(1)\))[-. ]?\d{3}[-. ]?\d{4}/", $test, $result);
所以我需要扩展它以支持国际前缀,例如1 或+1。因此,它还应该匹配1(589) 845 2889、+1(589) 845 2889、1589 845 2889、1 589 845 2889、15898452889 等。
任何帮助将不胜感激。
【问题讨论】:
-
在开头包含
(\+?1 ?)?? -
你为支持1+1做了什么?
-
试过
(?:1(?:[. -])?),但它只匹配带有 1、+1 的那些。排除其他人。 -
@Phil,谢谢,可以工作,但在
+1207 244 7002和+1 207 244 7002等一些极端情况下会失败 -
@nice_dev 不应该是
标签: php regex regex-group