gpt4 book ai didi

javascript - 为什么正则表达式在 Javascript 中使用 'match' 两次获取值?

转载 作者:搜寻专家 更新时间:2023-11-01 04:50:30 24 4
gpt4 key购买 nike

我有以下代码:

var str = "$123";
var re = /(\$[0-9]+(\.[0-9]{2})?)/;
var found = str.match(re);

alert(found[1]);
alert(found[0]);

我试图理解为什么 found[0] 和 found[1] 会包含 123 美元。为什么会得到两次?

我只想得到所有“潜在”价格,例如,如果我有这个字符串:

var str = "$123 $149 $150"; 它将是:

found[0] = $123
found[1] = $149
found[2] = $150

就是这样,找到的数组不会有更多的匹配项。

这里发生了什么?我错过了什么?

最佳答案

那是因为整个表达式都有括号:它定义了一个捕获组。

当你不使用 g 标志时,match 返回一个数组:

  • 如果匹配模式则为整个字符串
  • 捕获的组

这里捕获的组是整个字符串。

你似乎想要的是

"$123 $149 $150".match(/\$\d+(\.\d{0,2})?/g)

返回

["$123", "$149", "$150"]

引用:the MDN about regular expressions and flags

关于javascript - 为什么正则表达式在 Javascript 中使用 'match' 两次获取值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19664929/

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