Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 正则表达式不包括';t仅排除字符串的第一个字符_Javascript_Regex - Fatal编程技术网

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}
字符序列。感谢您所做的一切,祝您有愉快的一天