我试图从字符串中提取美国唯一的电话号码.
我浏览了网络/ 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
Run Code Online (Sandbox Code Playgroud)
请告诉我如何在单个Regex for PHP中实现这一壮举.
编辑:
如果您认为用户可以输入任何其他格式的美国号码,也请同时提及,并将其包含在RegEX中.
PS:
实际上我正试图刮掉Craiglist,用户可能已经以任何可能的格式发布了他们的电话号码.
在 PHP (PCRE) 中,您可以基于条件子模式使用此正则表达式:
(\()?\d{3}(?(1)\))[-.\h]?\d{3}[-.\h]?\d{4}
Run Code Online (Sandbox Code Playgroud)
(\()?匹配可选(并将其捕获到组#1中(?(1)\))是条件模式),仅当组 #1 不为空(即(出现在匹配项的左侧时)才结束匹配。| 归档时间: |
|
| 查看次数: |
282 次 |
| 最近记录: |