2016-09-21 34 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;"