Javascript - 标签之间的全局替换字符串

Gra*_*ham 3 javascript

有人可以帮助我使用 regexp javascript 代码,用<br /><pre>分区中找到的换行符 "\n"替换所有标签。例如,传递给包含以下内容的函数的字符串

<pre class="exampleclass">1<br />2<br />3</pre>
Run Code Online (Sandbox Code Playgroud)

应返回为(未显示换行符,但我希望您明白):

<pre class="exampleclass">1(newline)2(newline)3</pre>
Run Code Online (Sandbox Code Playgroud)

另一个例子:

<div>foo<br />bar<pre>1<br />2</pre></div>
Run Code Online (Sandbox Code Playgroud)

返回为:

<div>foo<br />bar<pre>1(newline)2</pre></div>
Run Code Online (Sandbox Code Playgroud)

请注意,类和部门的内容以及字符串中的其他内容(其他 div 等)是动态的。另一方面,<br />标签不会改变,因此不需要迎合<br>或其他变体。

注意 - 我正在处理字符串,而不是 HTML 元素.. 以防万一我提出问题的方式有任何混淆。

Spi*_*man 5

你可以用

str.match(/<pre(?:.*?)>(?:.*?)<\/pre>/g);
Run Code Online (Sandbox Code Playgroud)

然后对于所有比赛

replaced = match.replace(/<br \/>/g, '\n');
str.replace(match, replaced);
Run Code Online (Sandbox Code Playgroud)

所以大概是这样的:

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'));
}
Run Code Online (Sandbox Code Playgroud)

编辑:更改为匹配<pre class="">