Javascript 正则表达式不包括';t仅排除字符串的第一个字符
首先,我们有以下字符串:Javascript 正则表达式不包括';t仅排除字符串的第一个字符,javascript,regex,Javascript,Regex,首先,我们有以下字符串: aaa{ignoreme}asdebla bla f{}asdfdsaignoreme}asd 我们希望正则表达式能够找到空格和任何特殊的字符,如{},但是如果{之后正好出现ignoreme},则将其排除在外 这就是我们现在的处境: (?!{ignoreme})[\s\[\]{}()<>\\'"|^`] (?!{ignoreme})[\s\[\]{}()\\''''.^`] 问题是我们的正则表达式在ignoreme之后找到} 这里是链接 感谢您的帮助,
aaa{ignoreme}asdebla bla f{}asdfdsaignoreme}asd
我们希望正则表达式能够找到空格和任何特殊的字符,如{}
,但是如果{
之后正好出现ignoreme}
,则将其排除在外
这就是我们现在的处境:
(?!{ignoreme})[\s\[\]{}()<>\\'"|^`]
(?!{ignoreme})[\s\[\]{}()\\''''.^`]
问题是我们的正则表达式在ignoreme之后找到}
这里是链接
感谢您的帮助,
感谢关键是
}
是匹配的,因为您的(?!{ignoreme})
前瞻只跳过一个{
后跟ignoreme}
,并匹配一个}
,因为它没有启动{ignoreme}
字符序列。另外,在JS中,您不能使用像(?)这样的后视
这是一种可以用正则表达式处理的问题,正则表达式匹配您不需要的内容,并匹配和捕获您需要的内容:
/{ignoreme}|([\s[\]{}()<>\\'"|^`])/g
/{ignoreme}{124;([\ s[\]{}()\\''“{124;^`])/g
见
现在,{ignoreme}
被匹配(并且您不必使用此值)并且([\s[]{}()\\\'“^`])
被捕获到组1中,您需要使用该组的值。我正在等待“但是我需要…”注释。没有“但是我需要…”注释,因为我对该问题的处理方法错误。我想使用否定的前瞻(?)。这要简单得多。是的,关键是您实际上需要一个lookback,但JS regex引擎不支持此结构。:(它是不同的模式和输入,但结构和概念相同:(?!{{ignoreme})
lookahead在模式中限制一个跟随它的泛型字符类,这样字符类就不能匹配在lookahead中指定的字符序列的起始字符。它是的一部分,您可以在那里读更多的内容。因此,aaa{{ignoreme}中的第一个{
asd
不匹配,但第一个后的第二个{
匹配,因为它没有启动{{{ignoreme}
字符序列。感谢您所做的一切,祝您有愉快的一天