2016-08-03 126 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正则表达式引擎不支持这种构造。 :( –

相关问题