我试图创建一个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组合)不是我的事。
非常感谢任何帮助!
谢谢, 杰里米
答案 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的实时性。