我正在尝试匹配包含“电话号码”一词的句子,但在“电话号码”之前不包含“我的”一词的句子。
我已经尝试过:(?<!\bmy\s)(p[^\s]*h[^\s]*n[^\s]*e|t[^\s]*l[^\s]*p[^\s]*n)\s+number
(如预期)不匹配:
where do i enter my phone number in your form?
但确实匹配(不符合预期)
this is my awesome phone number
基本上如果这个词my
位于 phone number
之前句子中的某个位置然后我希望它失败。
- 支持后视。
最佳答案
您可以使用否定前瞻来检查单词 my 是否出现在电话号码之前,然后匹配包含电话号码的字符串:
^(?!.*?\bmy\b.*\bphone number\b).*\bphone number\b.*$
将匹配:
^
字符串开头(?!.*?\bmy\b.*\bphone number\b)
断言该字符串不包含我之前的电话号码.*
匹配任意字符 0 次以上\bphone number\b
计算单词边界之间的电话号码,以防止单词出现更大的匹配.*
对任意字符进行 0 次以上数学运算$
字符串结尾
关于Javascript Reg Exp 匹配一个带有单词 "phone number"但前面没有单词 "my"的句子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54459040/