2016-09-21 36 views
1

我有一个字符串:正则表达式 - 负负回顾后与BR

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

我想替换:<&lt;>&gt;,但我不希望更换<>如果是<br>标签。所以,我这样做

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

第一个替换工作,但第二个不是。

+0

对于一般情况下,我想你可能需要一个解析器来处理这个问题。 –

+0

查看https://jsfiddle.net/pwh3ht1t/,它可能会给你一个想法如何解决这个1正则表达式替换调用。 –

+0

您可以用'<'和'> +'替换'<+'与'>',这将是我看到发生在正则表达式中最简单的方式。 – vlaz

回答

0

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;"