从字符串中提取美国电话号码
我正试图从字符串中提取美国电话号码。
我浏览过网页/ SO,但没有找到适合我需求的解决方案。
说实话,我在网络编程方面拥有2.5年的经验,但我非常喜欢RegEX。
这里只有我写的RegEX (d{3}+-d{3}+-d{4}+)
但它只能检测到589-845-2889
这里是我想要提取的电话号码。
589-845-2889
(589)-845-2889
589.845.2889
589 845 2889
5898452889
(589) 845 2889
请告诉我如何在单个Regex for PHP中实现这一壮举。
编辑:
如果您认为用户可以输入任何其他美国数字格式,那么也请提及,并将其包含在RegEX中。
PS:
其实我试图抓住Craiglist,用户可能会以任何可能的格式发布他们的电话号码。
在PHP(PCRE)中,您可以使用基于条件子模式的正则表达式:
(()?d{3}(?(1)))[-.h]?d{3}[-.h]?d{4}
RegEx演示
(()?
匹配可选项(
并将其捕获到组#1中 (?(1)))
是条件模式匹配关闭)
只有组#1不为空ie (
存在于比赛的左侧。 最后,它的工作原理:
^(((d{3}))|(d{3}))[s-.]?d{3}[s-.]?d{4}
在记事本++中测试
链接地址: http://www.djcxy.com/p/34949.html