使用jquery或javascript查找并替换所有匹配的动态字符串
以下是我的html的正文:使用jquery或javascript查找并替换所有匹配的动态字符串,jquery,replace,foreach,pattern-matching,replaceall,Jquery,Replace,Foreach,Pattern Matching,Replaceall,以下是我的html的正文: <body> <div>_good morning John... _welcomeText.</div> <label> _welcomeText </label> <a href="">_good</a> </body> 此代码有效,但它仅替换匹配模式的第一个实例。由于我正在替换来自foreach循环的动态值key,因此我无法使用/key/g替
<body>
<div>_good morning John... _welcomeText.</div>
<label> _welcomeText </label>
<a href="">_good</a>
</body>
此代码有效,但它仅替换匹配模式的第一个实例。由于我正在替换来自
foreach
循环的动态值key
,因此我无法使用/key/g
替换所有实例。请帮助。我不推荐这样的基于文本的操作
重要的是,这将是非常昂贵的
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);
}
})
});
演示:您应该使用此语法创建正则表达式
var myRegex = new RegExp(key, 'g');
我有一个问题。如果存在类似于:
伪文本
的内容,则代码无法工作。有什么办法可以解决吗?如果你有一组预定义的属性需要测试,你可以告诉我怎么做。我找到了解决办法<代码>$('..+键).removeClass(键).addClass(值)代码>
var myRegex = new RegExp(key, 'g');