gpt4 book ai didi

JavaScript 正则表达式 : Not starting with

转载 作者:行者123 更新时间:2023-11-30 18:51:45 26 4
gpt4 key购买 nike

我想替换所有不以“<pre>”开头且不以“</pre>”结尾的字符串。

假设我想找到换行符并将它们替换为“<p/>”。我可以获得“未跟随”部分:

var revisedHtml = html.replace(/[\n](?![<][/]pre[>])/g, "<p/>");

但我不知道“不是开始于”部分放在前面。

有什么帮助吗? :)

最佳答案

Steve Levithan 的第一个 lookbehind-alternative 是这样的可以应用于您的问题:

var output = s.replace(/(<pre>[\s\S]*?<\/pre>)|\n/g, function($0, $1){
return $1 ? $1 : '<p/>';
});

当它到达 <pre> 时元素,它捕获整个事物并将其重新插入输出。它从未真正看到元素内的换行符,只是将它们与所有其他内容一起吞噬。因此,当 \n在正则表达式中 does 匹配换行符,你知道它不在 <pre> 中元素,并应替换为 <p/> .

但是不要错误地将此技术视为 hack 或解决方法;我会推荐这种方法,即使回顾 可用。使用环视方法,正则表达式必须检查每个换行符并每次应用环视以查看是否应替换它。这是它必须做的很多不必要的工作,而且正则表达式要复杂得多且更难维护。

与往常一样,在 HTML 上使用正则表达式时,我忽略了很多可能影响结果的因素,例如 SGML 注释、CDATA 部分、属性值中的尖括号等。您必须确定这些因素中的哪些因素你必须处理你的情况,哪些你可以忽略。在使用正则表达式处理 HTML 时,没有通用的解决方案。

关于JavaScript 正则表达式 : Not starting with,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3640799/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com