javascript - 为什么正向lookbehinds被捕获作为javascript中正则表达式匹配的一部分?

标签 javascript regex

以下 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/

相关文章:

javascript - 为什么我的功能只能使用一个 ID?

javascript - 为什么 UpdatePanel 会在几分钟后停止工作?

javascript - 在 Firefox 和谷歌浏览器上复制到剪贴板

javascript - 触发替换中的正则表达式时光标向后移动,JavaScript

javascript - 使用 python 和 javascript 的正则表达式速度慢,但在 go 和 php 中快速失败

javascript - 如何使用单个 $ ('#id' ).on ('change' , function) 执行两个结果;

javascript - 单个字符串中的多个 ip 地址

c# - 复杂的字符串拆分

php - 匹配括号内的所有子字符串,但以黑名单单词开头的子字符串

javascript - PHP 表单在重新加载或转到上一个时保留表单的值