1

我正在尝试为特定单词添加跨度,如下所示:

var value = "eror";
var template = "/(" + value + ")/g";
$("#content").html($("#content").html().replace(template, '<span class="spell_error">$1</span>'));

这是我的小提琴。我尝试使用我在这里看到的解决方案,但它似乎不起作用。知道为什么吗?谢谢

4

1 回答 1

6

您正在混淆正则表达式文字和字符串。

使用它来创建您的正则表达式:

var template = new RegExp("(" + value + ")", 'g');

正则表达式文字是这样的:

/(something)/

没有报价。但是因为它是一个文字,你不能用你的代码来构建它,所以这就是你必须使用RegExp构造函数的原因。

附注:您的替换物会变得更轻,更重要的是,通过使用将函数作为回调的html变体更干燥:

$("#content").html(function(_,html){
    return html.replace(template, '<span class="spell_error">$1</span>')
});
于 2013-07-19T16:07:26.933 回答