javascript用javascript表达式替换所有内容?

时间:2011-12-02 02:41:30

标签: javascript replace

我知道这个regexp替换: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]));

我想做什么?

2 个答案:

答案 0 :(得分:2)

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

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

注意,您可以使用jQuery replaceWith方法(可能使用克隆方法,具体取决于您要执行的操作),为1节点提供您尝试替换的所有节点属性。

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

答案 1 :(得分:0)

我意识到另一张海报的答案可能与你需要的内容更紧密地对齐,但是如果你想用它们中的变量来制作花哨的正则表达式,你需要使用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