gpt4 book ai didi

javascript - 为什么我的正则表达式捕获组在匹配多个部分时只捕获字符串的最后一部分?

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:00:27 24 4
gpt4 key购买 nike

我尝试了什么

var test = "asdfdas ABCD EFGH";
var regex = /^\S+( [A-Z]{4})+$/;
// Also tried: /^\S+( [A-Z]{4})+$/g
// And: /^\S+( [A-Z]{4})+?$/g
var matches = test.match(regex);

我做了一个JSFiddle .

我的期望

变量 matches 应该变成这个数组:

[
"asdfdas ABCD EFGH",
" ABCD",
" EFGH"
]

我得到了什么

变量matches实际上就是这个数组:

[
"asdfdas ABCD EFGH",
" EFGH"
]

我的想法

我的猜测是我在捕获组和/或 $ 逻辑中遗漏了一些东西。任何帮助,将不胜感激。 (我知道我可以弄清楚如何在多个正则表达式中执行此操作,但我想了解这里发生了什么。)

最佳答案

是的,这正是它的作用;你没有做错任何事。当一个组被赋予一个量词时,它只会捕获它的最后一个匹配项,而这就是它在 JavaScript 中所做的全部。正如您所说,一般的解决方法是使用多个正则表达式,例如

var test = "asdfdas ABCD EFGH";
var match = test.match(/^\S+<b>((?: [A-Z]{4})+)</b>$/); // capture all repetitions
<b>var matches = match[1].match(/ [A-Z]{4}/g);</b> // match again to get individual ones

关于javascript - 为什么我的正则表达式捕获组在匹配多个部分时只捕获字符串的最后一部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27111898/

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