当找不到单词时匹配的正则表达式

时间:2013-02-24 07:45:56

标签: javascript regex regex-negation

当字符串与关键字不匹配时,我需要一个返回某些内容(整个句子)的正则表达式。

也许这很奇怪,但我在javascript中需要这样的东西:

"any word".match(/.*(?!my key)/) => I would want ["any word"]
"my key".match(/.*(?!my key)/) => I would want null

此前一个版本不起作用。

我做不了什么,哪个会起作用:

if "any word".match(/my key/)
  return null
else
  return "any word"

因为我在一个接收正则表达式的地方并且如果它匹配则执行一个函数。

1 个答案:

答案 0 :(得分:1)

在你的正则表达式中,.*首先匹配整个字符串,然后前瞻断言(?!my key)也成功(因为你不能匹配字符串末尾的my key,疗程)。

你想要

"test string".match(/^(?!.*my key).*/)

此外,如果测试字符串可能包含换行符,则可能需要使用s修饰符,并且您可能希望使用单词边界(\b)来避免使用{{1}等字符串的误报}}:

army keypad