【发布时间】:2017-01-12 08:16:52
【问题描述】:
我必须构建一个 RegExp 对象,它将从数组中搜索单词, 并且只会发现整个单词匹配。
例如 我有一个单词数组('יל','ילד'), 我希望 RegExp 找到“a”或“יל”或“ילד”,而不是“ילדד”。
这是我的代码:
var text = 'ילד ילדדד יל';
var matchWords = ['יל','ילד'];
text = text.replace(/\n$/g, '\n\n').replace(new RegExp('\\b(' + matchWords.join('|') + ')\\b','g'), '<mark>$&</mark>');
console.log(text);
我尝试过的:
我试过这段代码:
new RegExp('(יל|ילד)','g');
效果很好,但它也能找到像“ילדדדד”这样的词,我只需要匹配整个词。
我也试过这段代码:
new RegExp('\\b(יל|ילד)\\b','g');
但是这个正则表达式没有找到任何单词!
我应该如何构建我的 RegExp?
【问题讨论】:
-
new RegExp('\\b(word1|word2|word3)\\b','g');怎么找不到匹配项?请提供代码sn-p进行复现。 -
这是我的代码:
text = text.replace(/\n$/g, '\n\n').replace(new RegExp('\\b(' + matchWords.join('|') + ')\\b','g'), '<mark>$&</mark>'); -
将代码添加到问题中。
-
所以,您只需将最后一个换行符加倍,但
matchWords变量包含什么?请连同text变量一起添加到问题中。 -
你看,我把代码变成了sn-p,你得到的结果是
word1111 <mark>word1</mark> wwword2。它有效,不是吗?
标签: javascript regex