gpt4 book ai didi

javascript - 为什么这个 javascript 正则表达式无法匹配 2 个连续字符?

转载 作者:行者123 更新时间:2023-11-28 14:56:47 24 4
gpt4 key购买 nike

来自Mozilla documentation

x{n,}   

Where n is a positive integer. Matches at least n
occurrences of the preceding item x.

For example, /a{2,}/ doesn't match the "a" in "candy",
but matches all of the a's in "caandy" and in "caaaaaaandy".

(x)     

Matches x and remembers the match. These are called capturing groups.

根据这两条信息,我假设以下内容

elmt1 = 'aba'
elmt1.match(/(.){2,}/g)

通常会返回 null 因为我之前包含了该字符并要求它返回至少 2 次出现的该字符。

我认为

elmt1 = 'aab'
elmt1.match(/(.){2,}/g)

通常会返回'aa'

但是,此方法始终返回所有内容,整个字符串。我对此有点困惑,因为在我看来,它与文档中所写的内容相矛盾。

有人可以向我解释为什么这个正则表达式返回所有内容吗?

谢谢大家!

最佳答案

我认为您希望 (.) 记住它匹配的第一个字符,并且 (.){2,} 匹配该特定字符的至少 2 次出现,但这不是它的工作原理。 (.) 会记住它匹配的字符并保存它,如果你想使用它,你必须用 \1 (或 \2\3...取决于您想要哪个组)。

此外,您不应该将量词应用于捕获组,因为它引起的行为几乎总是不是您想要的行为(该组匹配所有字符,但只记住最后一个字符)。

在这种情况下你想要的是(.)\1+,意思是:匹配任何字符后跟相同字符一次或多次。

关于javascript - 为什么这个 javascript 正则表达式无法匹配 2 个连续字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42580069/

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