Javascript正则表达式匹配单词没有周围的字符

时间:2014-12-04 02:27:17

标签: javascript regex

我试图创建一个javascript正则表达式来替换单词,但只是整个单词。当单词是其他单词的子词时,我遇到了问题。例如,让我们说我要替换"熊"与"狗"在下面的句子中。

熊和另一只熊一起去了熊。

这将是:

狗和另一只狗一起去了。

注意:1。)beartown没有改变,因为它不是整个单词 2.)最后一次"熊"虽然之后没有人物,但确实发生了变化。

我目前的脚本是:

...
var term = this.terms[i];
var pattern = new RegExp(term.name,'ig');
var content = $(this.container).html().replace(pattern,function(match) {
....

它目前匹配'熊的所有实例,因此它不会遗漏“beartown'

基于Javascript Regex Surrounded by Non-Word Characters, Don't Include Surroundings,我尝试了以下变体:

var pattern = new RegExp('\b' + term.name + '\b','ig');

但无论我尝试什么变化,它现在都无法匹配。不可否认,正则表达式(特别是w / javascript组合)不是我的事。

非常感谢任何帮助!

谢谢, 杰里米

2 个答案:

答案 0 :(得分:2)

字符串和正则表达式都使用反斜杠进行转义,因此要在正则表达式中使用反斜杠进行转义,必须先将其转义以将其放入字符串中:

var pattern = new RegExp('\\b' + term.name + '\\b','ig');

\\最终会在正则表达式中以\结尾,因此您获得\b而不是退格符(因为\b恰好是转义序列字符串中的退格键。)

答案 1 :(得分:0)

var pattern = new RegExp('\\b' + term.name + '\\b', 'g');

对于其他RegEx乐趣,请使用:http://www.regexr.com/它可让您测试RegExs的实时性。