我知道这个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]));
我想做什么?
答案 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