有人可以帮我用regexp javascript代码来替换所有<br />
吗?在 <pre>
中找到带有换行符“\n”的标签divisions.. 例如,传递给包含以下内容的函数的 string:
<pre class="exampleclass">1<br />2<br />3</pre>
应该返回为(未显示换行符,但我希望你明白这个想法):
<pre class="exampleclass">1(newline)2(newline)3</pre>
另一个例子:
<div>foo<br />bar<pre>1<br />2</pre></div>
返回为:
<div>foo<br />bar<pre>1(newline)2</pre></div>
请注意,类和分区内容是动态的,连同字符串中的其他内容(其他 div 等)。另一方面,<br />
标签不会更改,因此无需满足 <br>
或其他变体。
注意 - 我正在处理字符串,而不是 HTML 元素。以防万一我提出问题的方式有任何混淆。
最佳答案
你可以使用
str.match(/<pre(?:.*?)>(?:.*?)<\/pre>/g);
然后对于所有匹配项
replaced = match.replace(/<br \/>/g, '\n');
str.replace(match, replaced);
所以可能是这样的:
var matches = str.match(/<pre(?:.*?)>(?:.*?)<\/pre>/g),
len = matches.length,
i;
for (i = 0; i < len; i++) {
str = str.replace(matches[i], matches[i].replace(/<br \/>/g, '\n'));
}
编辑:更改为匹配 <pre class="">
关于Javascript - 全局替换标签之间的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4460792/