Javascript regexp取代所有的

时间:2011-04-28 22:35:31

标签: javascript regex

我正在尝试替换<br />标记后出现的所有</h2>标记。这就是我到目前为止所做的:

Text = Text.replace(new RegExp("</h2>(\<br \/\>.+)(.+?)", "g"), '</h2>$2');

它似乎不起作用,任何人都可以帮忙吗? (没有找到匹配项。)

测试用例:

<h2>Testing</h2><br /><br /><br />Text

要:

<h2>Testing</h2>Text

4 个答案:

答案 0 :(得分:15)

这比你想象的要简单:

Text = Text.replace(new RegExp("</h2>(\<br \/\>)*", "g"), "</h2>");

答案 1 :(得分:5)

这可以满足您的要求:

Text = Text.replace(new RegExp("</h2>(<br />)*", "g"), '</h2>');

答案 2 :(得分:5)

如果你有jQuery踢,那么你可以安全地做到这一点,没有正则表达式:

var $dirty = $('<div>').append('<p>Where is<br>pancakes</p><h2>house?</h2><br><br>');
$dirty.find('h2 ~ br').remove();
var clean = $dirty.html();
// clean is now "<p>Where is<br>pancakes</p><h2>house?</h2>"

这也会隔离<br><br/><br /><BR>等之间的差异。

答案 3 :(得分:3)

你还可以让它更好一点吗?使用速记正则表达式语法

Text = Text.replace(/<\/h2>(<br\s*\/>)*/g, '</h2>');