【问题标题】:Regex - negative Negative Lookbehind with br正则表达式 - 带有 br 的负负向后查找
【发布时间】:2017-01-29 14:14:41
【问题描述】:

我有一个字符串:

var a = '<<<<<<<br>>>>>>>>'

我想替换:&amp;lt;&amp;lt;&amp;gt;&amp;gt;,但我不想替换 &lt;&gt; 如果它是 &lt;br&gt; 标记。所以,我正在这样做

a.replace(/<(?!br>)/g, '&lt;').replace(/>(?<!<br)/g, '&gt;')

第一个替换有效,但第二个无效。

【问题讨论】:

  • 对于一般情况,我认为您可能需要一个解析器来处理这个问题。
  • 请参阅jsfiddle.net/pwh3ht1t,您可能会知道如何通过 1 个正则表达式替换调用来解决此问题。
  • 您可以将&lt;+ 替换为&amp;lt; 并将&gt;+ 替换为&amp;gt;,这是我看到正则表达式发生这种情况的最简单方法。
  • 实际上,我读错了这个问题。现在我想知道那是真的你想要做的还是XY problem

标签: javascript regex regex-negation


【解决方案1】:

Javascript 不支持lookbehinds,因此您的表达式无效。

对于左大括号:

<(?!\/?\w)

对于右大括号:

\B>

\B 表示非单词边界。

JS:

> a.replace(/<(?!\/?\w)/g, '&lt;').replace(/\B>/g, '&gt;')
< "&lt;&lt;&lt;&lt;&lt;&lt;<br>&gt;&gt;&gt;&gt;&gt;&gt;&gt;"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-11
    • 2020-09-09
    相关资源
    最近更新 更多