Javascript用Javascript表达式替换所有

javascript replace all with a javascript expression?

本文关键字:Javascript 表达式 替换      更新时间:2023-09-26

我知道这个regexp replace: something.replace(/something/g,"something");替换字符串中的每个事件,但是我如何用jQuery/JavaScript表达式替换所有的东西,因为像这样的东西:

newhtml=newhtml.replace(wrap($('<span class="charachter">' + prop + '</span>'))/g, wrap($('<span class="charachter">' + prop + '</span>'), obj[prop]));

不能工作,当它被转换成这样:

newhtml=newhtml.replace(/wrap($('<span class="charachter">' + prop + '</span>'))/g, wrap($('<span class="charachter">' + prop + '</span>'), obj[prop]));

我该怎么办?

正则表达式仅用于字符串。正在发生的事情是,它正在将通常会选择节点的文本转换为字符串,并试图匹配这些字符,这些字符将不匹配,因此它将不做任何事情。

如果要替换节点,则需要修改节点属性或删除该节点并在其相同位置添加新节点。

注意,您可能会使用jQuery的replaceWith方法(也可能使用clone方法,这取决于您想要做什么)来为1节点提供您试图替换的所有节点属性。

$('#node1').replaceWith($('#node2'));  //Replace node1 with node2
$('#node1').replaceWith($('#node2').clone());  // Replace node1 with a copy of node2

我意识到其他海报的答案可能更接近于你所需要的,但如果你想做花哨的正则表达式与其中的变量,你需要使用RegExp构造函数。

var text = "old stuff"
var stuff = "lots of old stuff"
var newStuff = stuff.replace(new RegExp(text, 'g'), "new stuff") // lots of new stuff

关于替换的更多文档:https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/replace

对于你来说,也许你想做这样的事情:

var $span = $("<span class='rarar'>bla bla bla</span>") // create the new element
var html = $span.text() // bla bla bla
var text = html.replace(new RegExp("bla", "g"), "go")
$span.text(text) // <span class='rarar'>go go go</span>
$span.appendTo(document.body) // add it to the body