替换字符串中的html标记,但保留文本并使用自定义标记重新换行

时间:2014-01-12 22:15:53

标签: jquery replace innerhtml replacewith

我知道如何使用替换&替换但我需要做一些不同的事情。

示例字符串:

<span class="highlight_grey">example:</span> some additional text   
& <span class="highlight_grey">again...</span> and to wrap up some 
regular <span>span.. no class here</span>

期望的结果:

[highlight color="default"]example:[/highlight] some additional text   
& [highlight color="default"]again...[/highlight] and to wrap up some   
regular <span>span.. no class here</span>

element.replace在这里不起作用,因为我需要更换整个换行并保留文本 replaceWith也没有帮助我,因为我需要使用字符串,我又要替换了 包裹元素。

非常感谢您的帮助

2 个答案:

答案 0 :(得分:1)

编辑:抱歉,我没有注意到其余字符串。无论如何:

http://jsfiddle.net/WJTb7/4/

HTML:

<div id="test">
<span class="highlight_grey">example:</span> some additional text & <span class="highlight_grey">again...</span>
</div>

和JS:

var oldHtml = document.getElementById('test').innerHTML,
    newHtml;

newHtml = oldHtml.replace(/<span class="highlight_grey">(.*?)<\/span>/gi, '[highlight color="default"]$1[/highlight]')

alert(newHtml);

答案 1 :(得分:1)

这个例子看起来很重,我打赌它可以简化为更加优雅的版本。 Lordex的更精简。我抓住了跨度。可能不需要。

// of course, for txt - you'd just use document.getElementById('test').innerHTML,
var txt = '<span class="highlight_grey">example:</span> some additional text & <span class="highlight_grey">again...</span><span> .. MORE SPAN TEXT </span>'


 txt.replace(/(\<span class="highlight_grey"\>)(.*?)(\<\/span>)/g,function(_,$1,$2,$3){ return '[highlight color="default"]' + $2 + '[/highlight]';

})

// output
// "[highlight color="default"]example:[/highlight] some additional text & [highlight color="default"]again...[/highlight]<span> .. MORE SPAN TEXT </span>"