gpt4 book ai didi

javascript - 正则表达式查找字符串中的十进制数字

转载 作者:行者123 更新时间:2023-12-03 10:51:34 27 4
gpt4 key购买 nike

我正在尝试搜索嵌入十进制数字的字符串。该数字使用逗号(百/千分隔符)和点作为小数分隔符。

无效十进制数示例:

  • .33、.333(数字前面必须至少有 1 位数字,尽管可以是零)
  • 1,22,33.33, 1,22.333(逗号分隔数字的最后一段必须有 3 位数字)
  • .3、.3333(十进制数必须在小数点后有 2 或 3 位数字)
  • ,0.33(十进制数不能以逗号开头)

有效十进制数示例:

  • 0.33 和 10.333
  • 1,22,333.33 和 1,222.333

特殊情况:如果字符串类似于“You a/c bal.33.33”。结果应该是 33.33

<小时/>

我尝试过以下正则表达式:

 (((\\d+\\,)+\\d{3})|([^,]\\d+))\\.\\d{2,3}(?!\\.\\d)

它适用于所有情况,但当数字有前导逗号时失败。

最佳答案

您可以使用捕获组作为

/(?:[^\d,]|^)(\d+(?:(?:,\d+)*,\d{3})?\.\d{2,3})\b/
  • 捕获组 1 ,(\d+(?:(?:,\d+)*,\d{3})?\.\d{2,3})\b 将包含字符串中的十进制数字。

  • (?:[^\d,]|^) 确保捕获组正确捕获整个数字而不是部分数字。

Regex Demo

测试

var str = "0.33";
var matches = str.match(/(?:[^\d,]|^)(\d+(?:(?:,\d+)*,\d{3})?\.\d{2,3})\b/);
console.log(matches[1])
=> 0.33

var str = "You a/c bal.33.33"
var matches = str.match(/(?:[^\d,]|^)(\d+(?:(?:,\d+)*,\d{3})?\.\d{2,3})\b/);
console.log(matches[1])
=> 33.33

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

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