使用jquery或javascript查找并替换所有匹配的动态字符串

时间:2014-03-06 07:03:34

标签: jquery replace foreach pattern-matching replaceall

这是我的html的正文:

<body>
    <div>_good morning John... _welcomeText.</div>
    <label> _welcomeText </label>
    <a href="">_good</a>
</body>

这是我的jQuery:

var custom_obj = {};
custom_obj["_welcomeText"] = "Welcome in custom";
custom_obj["_good"] = "Good in custom";

$.each(custom_obj, function(key, value) {
    $('body').text(function(index,text){
        return text.replace(key,value);
    });
});

此代码有效,但它只替换匹配模式的第一个实例。当我替换来自key循环的动态值foreach时,我无法使用/key/g替换所有实例。请帮忙。

2 个答案:

答案 0 :(得分:1)

我不推荐像这样的基于文本的操作

重要的是,这将是非常昂贵的

var custom_obj = {};
custom_obj["_welcomeText"] = "Welcome in custom";
custom_obj["_good"] = "Good in custom";

var $contents = $('body *').addBack().contents();
$.each(custom_obj, function (key, value) {
    var regex = new RegExp(key, 'g');
    $contents.each(function () {
        if (this.nodeType == 3) {
            this.nodeValue = this.nodeValue.replace(regex, value);
        }
    })
});

演示:Fiddle

答案 1 :(得分:0)

您应该使用此语法来创建正则表达式

var myRegex = new RegExp(key, 'g');