【发布时间】:2016-03-07 23:30:29
【问题描述】:
我有这个正则表达式来查找代码库中的电话号码:
\\d{3}[\.\s-]?\d{3}[\.\s-]?\d{4}\g
我如何修改它以使其不会匹配数字前面或后面跟着数字的实例?
18005555555 (should not match)
80055555551 (should not match)
"8005555555" (should match)
s800-555-5555 (should match)
8005555555 (should match)
800.555.5555 (should match)
编辑: 我并不是要“匹配整个单词”,因为匹配前后有一个空格是不够的。请参阅上面的第三个示例,该示例也应返回匹配项。
我只想匹配匹配前后没有数字的实例。
换句话说:
[NOT DIGIT][PHONE NUMBER][NOT DIGIT]
【问题讨论】:
-
用
^和$括起来?/^\d{3}[.\s-]?\d{3}[.\s-]?\d{4}$/ -
如果包含在文本中,则使用 word-boundries
\b -
@WiktorStribiżew 该解决方案与“s8005555555”不匹配。
-
@SebastianProske,我还想匹配字母或其他字符可能出现在数字之前或之后的情况。
-
@Himmel - 所以使用前瞻和后瞻应该可以工作,试试
(?<!\d)\d{3}[.\s-]?\d{3}[.\s-]?\d{4}(?!\d)
标签: regex