我正在尝试创建一个javascript正则表达式来替换单词,但只有整个单词 . 当单词是其他单词的子词时,我遇到了问题 . 例如,假设我想在下面的句子中将“bear”替换为“dog” .
熊和另一只熊一起去了熊
这将是:
那只狗和另一只狗一起去了
注意: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 回答
字符串和正则表达式都使用反斜杠进行转义,因此要在正则表达式中使用反斜杠进行转义,必须先将其转义以将其放入字符串中:
\\
将在正则表达式中以\
结尾,因此您将获得\b
而不是退格符(因为\b
恰好是字符串中退格的转义序列) .对于其他RegEx乐趣,请使用:http://www.regexr.com/它允许您测试RegExs实时 .