Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/380.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
为什么积极的lookbehind在javascript中作为正则表达式匹配的一部分被捕获?_Javascript_Regex - Fatal编程技术网

为什么积极的lookbehind在javascript中作为正则表达式匹配的一部分被捕获?

为什么积极的lookbehind在javascript中作为正则表达式匹配的一部分被捕获?,javascript,regex,Javascript,Regex,下面的javascript表达式生成[“myParameter=foobar”,“foobar”] 为什么“myParameter=foobar”甚至是匹配项?我认为积极的落后是排除在比赛之外的 有没有办法只捕获javascript中正则表达式的([a-Za-z]+)部分?我可以只取列表中的第二项,但是有没有办法从正则表达式中的匹配项中明确排除myParameter=。(?:myParameter=)是一个非捕获组,而不是查找组。JavaScript不支持lookbehinds 结果的第一个元素

下面的javascript表达式生成
[“myParameter=foobar”,“foobar”]

为什么
“myParameter=foobar”
甚至是匹配项?我认为积极的落后是排除在比赛之外的

有没有办法只捕获javascript中正则表达式的
([a-Za-z]+)
部分?我可以只取列表中的第二项,但是有没有办法从正则表达式中的匹配项中明确排除
myParameter=

(?:myParameter=)
是一个非捕获组,而不是查找组。JavaScript不支持lookbehinds

结果的第一个元素始终是完全匹配。捕获组的值是数组的第二个元素,
“foobar”

如果使用捕获组,即
(myParameter=)
,则结果将是:

["myParameter=foobar", "myParameter=", "foobar"]
同样,第一个元素是完全匹配的,每个其他元素对应一个捕获组。

(?:myParameter=)
是一个非捕获组,而不是一个查找组。JavaScript不支持lookbehinds

结果的第一个元素始终是完全匹配。捕获组的值是数组的第二个元素,
“foobar”

如果使用捕获组,即
(myParameter=)
,则结果将是:

["myParameter=foobar", "myParameter=", "foobar"]

同样,第一个元素是完全匹配的,每个其他元素对应一个捕获组。

您没有实现正向查找,
(?:…)
语法被称为非捕获组,用于对表达式进行分组,而不是捕获表达式(通常在有一组不同模式时交替使用)

您可以简单地引用捕获的组以获得匹配结果

var r = 'XXXXmyParameter=foobar'.match(/myParameter=([A-Za-z]+)/)[1];
if (r)
    console.log(r); //=> "foobar"

注意:JavaScript中不支持Lookbehind断言…

您没有实现正向Lookbehind,
(?:…)
语法称为非捕获组,用于对表达式进行分组,而不是捕获表达式(通常在具有一组不同模式时交替使用)

您可以简单地引用捕获的组以获得匹配结果

var r = 'XXXXmyParameter=foobar'.match(/myParameter=([A-Za-z]+)/)[1];
if (r)
    console.log(r); //=> "foobar"

注意:JavaScript中不支持查找断言…

myParameter是匹配的,因为您使用的是非捕获组

非捕获组与文本匹配,但不能反向引用

非捕获组:

(?:myParameter=)
积极前瞻:

(?=myParameter=)
(?!myParameter=)
消极前瞻:

(?=myParameter=)
(?!myParameter=)

您需要的正则表达式是:

(?!myParameter=)[A-Za-z]+$

myParameter是匹配的,因为您使用的是非捕获组

非捕获组与文本匹配,但不能反向引用

非捕获组:

(?:myParameter=)
积极前瞻:

(?=myParameter=)
(?!myParameter=)
消极前瞻:

(?=myParameter=)
(?!myParameter=)

您需要的正则表达式是:

(?!myParameter=)[A-Za-z]+$

这不是查找,而是一个非捕获组。JS中没有查找。如果它确实支持它,那么它将是`/(?这不是查找,它是一个非捕获组。在JS中没有查找。如果它确实支持它,那么它将是`/(?
(?!myParameter=)[a-Za-z]+
不会执行您认为它会执行的操作。引擎将前进一个位置以使断言通过。因此它将匹配“m
yParameter
(?!myParameter=)[A-Za-z]+
不会执行您认为它会执行的操作。引擎将前进一个位置以使断言通过。因此它将匹配“m
yParameter