【发布时间】:2026-02-20 15:50:01
【问题描述】:
我有一个字符串(部分是 HTML),我想将字符串 :-) 替换为 bbcode :wink:。但是这种替换不应该发生在<pre> 内,而应该发生在任何其他标签中(甚至不在标签内)。
比如我要替换
:-)<pre>:-)</pre><blockquote>:-)</blockquote>
到:
:wink:<pre>:-)</pre><blockquote>:wink:</blockquote>
我已经用下面的 RegEx 尝试过了,但它不起作用(没有被替换):
var s = ':-)<pre>:-)</pre><blockquote>:-)</blockquote>';
var regex = /:\-\)(?!(^<pre>).*<\/pre>)/g;
var r = s.replace(regex, ':wink:');
有人可以帮帮我吗? :-)
【问题讨论】:
-
不要尝试用正则表达式解析 HTML 节点; HTML 不是常规的。使用适当的 HTML 解析器来生成 DOM - 对于 JavaScript,jQuery 是一个理想的选择。
标签: javascript regex html-parsing