属性';在javascript中使用replace时不能替换

属性';在javascript中使用replace时不能替换,javascript,jquery,Javascript,Jquery,当我使用另一个内容替换该内容时,属性也会替换。意味着如果您检查下面的URL,则需要将文本“my_text”替换为“Mark”。现在这个正在替换,但包括锚属性“my_text”也正在替换。因此,我只需要替换除属性之外的内容 var src_str=$(“#test”).html(); var term=“我的文本”; 术语=术语。替换(/(\s+)/,“(]+>)*$1(]+>)*”; var模式=新的RegExp(“(“+术语+”),“gi”); src_str=src_str.replace

当我使用另一个内容替换该内容时,属性也会替换。意味着如果您检查下面的URL,则需要将文本“my_text”替换为“Mark”。现在这个正在替换,但包括锚属性“my_text”也正在替换。因此,我只需要替换除属性之外的内容

var src_str=$(“#test”).html();
var term=“我的文本”;
术语=术语。替换(/(\s+)/,“(]+>)*$1(]+>)*”;
var模式=新的RegExp(“(“+术语+”),“gi”);
src_str=src_str.replace(模式,“$1”);
src_str=src_str.replace(/([^]*)((]+>)+)([^]*)/,“$1$2$4”);
$(“#test”).html(src#u str)


如果要更改文本内容,请使用
$('a').text('your new text')
,这是需要突出显示my_text的文本

如果要更改
href
请使用
$('a').attr('href','your new url')


两者之间没有关系。

如果我理解正确,您希望在字符串“my_text”出现在文本内容中时替换它,而不是在属性中出现时替换它

这是一个很好的例子,说明了为什么使用regex操作HTML不是一个好主意:regex不知道DOM节点、属性和文本之间的区别。相反,请使用DOM遍历方法查找要修改的DOM部分,并仅处理这些部分:

//contents()包括文本节点,这就是我们要在此处搜索的内容:
$('#test').contents().each(function()){
//如果只是替换文本,您可以简单地设置this.textContent
//添加到一个新值。但由于它看起来像是要插入
//作为DOM节点,我们需要将文本节点转换为DOM节点:
如果(this.textContent.indexOf('my_text')>-1){//存在匹配项
var replacementNode=document.createElement('span');
//这里的正则表达式可以很简单,因为我们知道我们只处理文本:
var newContent=this.textContent.replace(/(my_text)/,“$1”);
replacementNode.innerHTML=newContent;
//…然后用新的DOM节点替换文本节点:
this.parentNode.insertBefore(replacementNode,this);
this.parentNode.removeChild(this)
};
});


这是需要突出显示我的文本的文本
,请检查我发布的JSFIDLE。如果类名是body,我想用“content”替换body中的一个“home”。这个类名也在变化请在问题中包含代码的相关部分,而不仅仅是作为JSFIDDLEOF的链接