.replace()所有Regex不能正常工作的实例

时间:2014-06-15 17:28:28

标签: javascript jquery regex

我一直在寻找一百万种形式并尝试过所有形式。我需要用值

替换文本的所有实例
this.text = {
    title:'This is my Title',
};

this.replaceTags = function() {
    //Replace Text
    $.each(this.text, function( index, value ){
        var item = "{{$text:"+index+"}}";
        var bodyText = $('body').html();
        var regex = new RegExp(item, 'g');
        var newText = bodyText.replace(regex,value);
        $('body').html(newText);
    })
}

我也试过

this.text = {
    title:'This is my Title',
};

this.replaceTags = function() {
    //Replace Text
    $.each(this.text, function( index, value ){
        var item = "{{$text:"+index+"}}";
        var bodyText = $('body').html();
        var newText = bodyText.replace(/item/g,value);
        $('body').html(newText);
    })
}

但两者都没有奏效。我的语法有错吗?

1 个答案:

答案 0 :(得分:2)

由于$是正则表达式中的特殊字符(它与行的末尾匹配),因此必须使用\将其转义。由于\是字符串中的特殊字符(它是转义字符),因此您必须自行转义。因此,您的代码变为:

var item = "{{\\$text:"+index+"}}";
var bodyText = $('body').html();
var regex = new RegExp(item, 'g');
var newText = bodyText.replace(regex,value);
$('body').html(newText);

DEMO


bodyText.replace(/item/g,value)实际上会查找字符序列item,因此无论如何都无法正常工作。