我有这个正则表达式来查找代码库中的电话号码:
\\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]
答案 0 :(得分:1)
Lookahead和lookbehind将帮助您解决这些限制 - 如果它们受到支持,例如
/(?<!\d)\d{3}[.\s-]?\d{3}[.\s-]?\d{4}(?!\d)/g
如果不支持,您可以将{look {4}替换为(?<!\d)
。如果不支持,可以将前瞻(?:^|\D)
替换为(?!\d)
。
您可以在此处找到演示:https://regex101.com/r/aS8jQ8/1