gpt4 book ai didi

javascript - 如何替换不在 JavaScript 中特定标签内的文本

转载 作者:行者123 更新时间:2023-11-29 16:29:27 29 4
gpt4 key购买 nike

我有一个字符串(部分 HTML),我想在其中替换字符串 :-)进入 bbcode :wink: .但是这种替换不应该发生在 <pre> 之内。 ,但在任何其他标签中(甚至不在标签内)。

比如我要替换

:-)<pre>:-)</pre><blockquote>:-)</blockquote>

到:

:wink:<pre>:-)</pre><blockquote>:wink:</blockquote>

我已经用下面的正则表达式试过了,但它不起作用(没有被替换):

var s = ':-)<pre>:-)</pre><blockquote>:-)</blockquote>';
var regex = /:\-\)(?!(^<pre>).*<\/pre>)/g;
var r = s.replace(regex, ':wink:');

有人可以帮帮我吗? :-)

最佳答案

应该这样做:-

var src = ":-)<pre>:-)</pre><blockquote>:-)</blockquote>"

var result = src.replace(/(<pre>(?:[^<](?!\/pre))*<\/pre>)|(\:\-\))/gi, fnCallback)

function fnCallback(s)
{
if (s == ":-)") return ":wink:"
return s;
}

alert(result);

之所以有效,是因为任何 pre 元素都将被正则表达式中的第一个选项拾取,并且一旦被消耗就意味着任何包含的 :-) 都无法匹配,因为处理器将超出它.

关于javascript - 如何替换不在 JavaScript 中特定标签内的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1666790/

29 4 0
文章推荐: Python MySQL-Connector 需要一分多钟才能打开连接
文章推荐: php - 检索 SQL 结果,按类别分组
文章推荐: mysql - 如何从 Laravel 中的一张 "user"表中建立父子关系
文章推荐: JavaScript:根据 URL 字符串显示/隐藏
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com