gpt4 book ai didi

具有非捕获组的 JavaScript RegEx 表现出令人困惑的行为

转载 作者:行者123 更新时间:2023-11-29 21:51:27 24 4
gpt4 key购买 nike

我的问题很简单。感谢上帝,因为正则表达式可能很复杂......

我在 url 中有一个查询参数,由 ?id=0061ecp6cf0q 给出。

我想匹配它,但只捕获等号后面的部分。

我有一个这样的正则表达式:

(?:\?id=){1}([a-z0-9])+

在 JavaScript 中,当我有一个包含查询参数的字符串并使用从上面的正则表达式构造的正则表达式对象对其执行 .match() 时,我返回一个长度为 1 的数组,其中包含以下条目:“? id=0061ecp6cf0q”。

当我使用查询字符串作为参数对正则表达式执行 .exec() 时,我返回一个长度为 2 的数组:

array[0] = "?id=0061ecp6cf0q"
array[1] = "q"

1) 为什么我的非捕获组看似捕获?2) 为什么要捕获“q”?

最佳答案

您的非捕获组没有捕获。数组的第 0 个元素始终是完整值。如果只想捕获值,则必须在要捕获的内容两边加上括号:

> /(?:\?id=){1}([a-z0-9]+)/.exec('?id=0061ecp6cf0q')
["?id=0061ecp6cf0q", "0061ecp6cf0q"]

编辑:

您只在 ([a-z0-9]) 周围加上括号,它将匹配一个字符(在本例中为 q),而不是包括 + 在内的整个字符>.

关于具有非捕获组的 JavaScript RegEx 表现出令人困惑的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28952644/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com