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

标签 javascript

有人可以帮我用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/

相关文章:

javascript - 如何使用 jQuery/Javascript 检查用户是否已选中一组复选框中的至少一个复选框?

javascript - 在用于 SEO 的 Marionette 应用程序中使用推送状态

javascript - 如何延迟函数返回,直到发生点击之后

javascript - Hapijs 服务器启动错误-无效的服务器选项

JavaScript:可以通过给定的 z 分数获得百分位吗?计算分位数?

javascript - 添加两个 float 并将总计分配给输入字段

javascript - 为什么这个简单的 javascript 函数不能完成它应该做的事情?

javascript - JavaScript/Ajax 文本中的随机单词

javascript - vue 路由器/:param with slashes

javascript - 主干引导集合未正确初始化