2016-08-03 99 views
3

首先,我們有以下字符串:正則表達式排除不排除字符串只有第一個字符

aaa{ignoreme}asdebla bla f{}asdfdsaignoreme}asd 

我們希望我們的正則表達式查找空格以及任何特殊charsacters像{},但如果經過{來準確ignoreme}然後排除

這就是我們現在的:

(?!{ignoreme})[\s\[\]{}()<>\\'"|^`] 

的問題是,我們的正則表達式鰭DS的}後ignoreme

這裏是鏈接https://regex101.com/r/bU1oG0/2

任何幫助表示讚賞, 感謝

回答

3

的一點是,}匹配,因爲您的(?!{ignoreme})先行只跳過{隨後與ignoreme}和火柴一個},因爲它沒有啓動一個{ignoreme}字符序列。而且,在JS中,你不能使用後視,如(?<!{ignoreme)}

這是一種可以用正則表達式來處理問題的匹配你不需要的東西,比賽和捕捉你需要:

/{ignoreme}|([\s[\]{}()<>\\'"|^`])/g 

regex demo

現在,{ignoreme}被匹配(並且您不必使用此值),並且([\s[]{}()<>\\'"|^`])被捕獲到組1中,您需要使用它的值。

+2

我在等「但我需要......」評論。 –

+0

不是「但我需要...」評論,因爲我對問題採取了錯誤的方法。我想用否定的前瞻(?!)來表達它。這很容易。 –

+0

是的,關鍵是你實際上需要一個逆序,但JS正則表達式引擎不支持這種構造。 :( –