首页 文章

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

提问于
浏览
0

我正在尝试创建一个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 回答

  • 0

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

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

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

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

    对于其他RegEx乐趣,请使用:http://www.regexr.com/它允许您测试RegExs实时 .

相关问题