只有在数字

时间:2016-03-07 23:30:30

标签: regex

我有这个正则表达式来查找代码库中的电话号码:

\\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]

1 个答案:

答案 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