gpt4 book ai didi

javascript - 正则表达式匹配字符串中的多个数字

转载 作者:行者123 更新时间:2023-12-02 07:59:59 29 4
gpt4 key购买 nike

我想从字符串中提取数字,例如

There are 1,000 people in those 3 towns.


并得到一个像 ["1,000", "3"] 这样的数组.
我从 Justin in this question 得到以下与正则表达式匹配的数字
^[+-]?(\d*|\d{1,3}(,\d{3})*)(\.\d+)?\b$
这对于检查它是否是一个数字很有用,但要让它在一个句子上工作,你需要删除“^”和“$”。
regex101 with start/end defined
regex101 without start/end defined
如果没有定义开始和结束,你会得到一堆长度为 0 的匹配项,这些匹配项很容易被丢弃,但它现在也用逗号分割任何数字。
如何使该正则表达式(或新的正则表达式)在句子上工作,并且仍然可以找到其中带有逗号的数字。
奖励将不会有所有 0 长度匹配。

最佳答案

表达式 /-?\d(?:[,\d]*\.\d+|[,\d]*)/g应该这样做,如果您可以允许不同的组,例如 1,00,000(这在某些语言环境中并不陌生)。我觉得我应该能够进一步简化它,但是当我尝试示例时,“333.33”被分解为“333”和“33”作为单独的数字。与上面它保持在一起。

现场示例:

const str = "There are 10,000 people in those 3 towns. That's 3,333.33 people per town, roughly. Which is about -67.33 from last year.";
const rex = /-?\d(?:[,\d]*\.\d+|[,\d]*)/g;
let match;
while ((match = rex.exec(str)) !== null) {
console.log(match[0]);
}


打破 /\d(?:[,\d]*\.\d+|[,\d]*)/g向下:
  • -? - 一个可选的减号(感谢 x15his/her answer 中标记它!)
  • \d - 一个数字
  • (?:...|...) - 一个非捕获组,包含之间的交替
  • [,\d]*\.\d+ - 零个或多个逗号和数字后跟 .和一个或多个数字,例如3,333.33 ;或
  • [,\d]* - 零个或多个逗号和数字

  • 第一个选项将贪婪匹配,如果没有小数点,则回退到第二个选项。

    关于javascript - 正则表达式匹配字符串中的多个数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58663230/

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