Javascript Reg Exp 匹配一个带有单词 "phone number"但前面没有单词 "my"的句子

标签 javascript regex regex-lookarounds

我正在尝试匹配包含“电话号码”一词的句子,但在“电话号码”之前不包含“我的”一词的句子。

我已经尝试过:(?<!\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.*$

Regex demo

将匹配:

  • ^ 字符串开头
  • (?!.*?\bmy\b.*\bphone number\b) 断言该字符串不包含我之前的电话号码
  • .* 匹配任意字符 0 次以上
  • \bphone number\b 计算单词边界之间的电话号码,以防止单词出现更大的匹配
  • .* 对任意字符进行 0 次以上数学运算
  • $ 字符串结尾

关于Javascript Reg Exp 匹配一个带有单词 "phone number"但前面没有单词 "my"的句子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54459040/

相关文章:

javascript - 让 eslint 与 eslint-plugin-vue 一起工作时出错

c# - 使用正则表达式在标签内找到 img 标签

java - 在Java中使用RegEx提取括号之间的参数

python - 如何使用否定先行删除两个字符之间的搜索

javascript - Parse 在 React Native 中找不到 localStorage 变量

javascript - 从 html 按钮单击停止 Node.js 无休止循环

javascript - 我的 ajax 根本不起作用?

javascript - 匹配并返回两个值之间的正则表达式

python - 对正则表达式感到困惑

javascript - 用于数字格式验证的正则表达式