正则表达式忽略匹配,如果特定单词的子串

时间:2017-05-29 12:29:31

标签: javascript regex regex-negation

我正在尝试匹配javascript中的文本字符串,只要它不是预定义单词的子字符串即可。

E.g。假设我们在文件中有这些单词,即使有匹配,我也不希望在搜索中显示 blue 这个词;

value
lunar
blue
clue

因此,如果用户搜索 lu ,则应显示除蓝色以外的所有字词。如果用户要搜索 ue ,则只能匹配值和线索。

我试着像这样做一个消极的期待;

((?!blue)lu)

虽然没有工作,但我不确定还能做什么。

1 个答案:

答案 0 :(得分:5)

您需要放置\w*以匹配否定前瞻和搜索字符串之间的0个或多个字词。

使用lu作为搜索字符串:

/\b(?!blue)\w*lu\w*/

使用ue作为搜索字符串:

/\b(?!blue)\w*ue\w*/

RegEx Demo

实际的Javascript代码可以是:

var kw = "lu"; or "ue"
var re = new RegExp("\\b(?!blue)\\w*" + kw + "\\w*");