javascript - 正则表达式中 (?=foo) 的意义是什么 if (? :foo) already exists?

标签 javascript regex

我正在通读 Javascript RegExp documentation并注意到正则表达式功能 x(?=y) 不是必需的,因为您可以只编写 x(?:y) 并且它会做完全相同的事情。

仅当 x 后跟 y 时才会匹配 x,并且不会在结果中捕获 y。

我错了吗?两者有区别吗?

最佳答案

(?=) 是一个“X,通过零宽度正先行”。 (?:) 是一个非捕获组。

根据您使用正则表达式的方法(匹配与查找等),与正先行匹配的结果可能不会包含在您的匹配结果中,非捕获组仍会包含在匹配结果中包含在匹配结果的 [0] 组中。

关于javascript - 正则表达式中 (?=foo) 的意义是什么 if (? :foo) already exists?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8399404/

相关文章:

regex - 在 Golang 中获取给定文件路径的目录名(不是路径)

java - 如何匹配由 "|e|"符号分割的字符串

javascript - 记录 Javascript/Jquery 错误和异常

javascript - 帮助使用 jquery 构建部分导航菜单

javascript - 列上的剑道网格分组 - TypeError : Cannot read property 'length' of undefined

java - 如何操作网页的历史记录?

php - 双方括号内任何内容的正则表达式

javascript - 正则表达式 : Matching everything except regex values in Javascript

javascript - 如何在 JavaScript 中设置语言环境,例如 toLocaleUpperCase()?

regex - 这个正则表达式中的 (?i) 和 ?@ 是什么意思