以下 JavaScript 表达式生成 ["myParameter=foobar", "foobar"]
。
'XXXXmyParameter=foobar'.match(/(?:myParameter=)([A-Za-z]+)/);
为什么“myParameter=foobar”
甚至是匹配的?我认为正向后看被排除在匹配之外?
有没有办法只捕获 JavaScript 中正则表达式的 ([A-Za-z]+)
部分?我可以只获取列表中的第二项,但是有没有办法从正则表达式的匹配中显式排除 myParameter=
?
最佳答案
(?:myParameter=)
是一个非捕获组,而不是回顾。 JavaScript 不支持lookbehinds。
结果的第一个元素始终是完全匹配。捕获组的值是数组的第二个元素,“foobar”
。
如果您使用捕获组,即 (myParameter=)
,结果将是:
["myParameter=foobar", "myParameter=", "foobar"]
同样,第一个元素是完全匹配的,每个其他元素对应一个捕获组。
关于javascript - 为什么正向lookbehinds被捕获作为javascript中正则表达式匹配的一部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27870745/