繁体   English   中英

使用正则表达式匹配提取数字、点和逗号

[英]Extract numbers, dot and comma using regex match

我试图从包含数字、逗号和点的字符串中提取$50,000.00金额。 我的代码如下:

var amount = '$50,000.00Fund Transfer to XXXX9090 Ref #0675'.match(/[^0-9,.]/);

如果数字中需要点[\\d,]+\\.\\d+您可以使用[\\d,]+\\.\\d+ ,例如: [\\d,]+\\.\\d+

如果点是可选的 - 您可以使用[\\d,]+(\\.\\d+)? ,
但在这种情况下,您可能会捕获不需要的值,例如: 90900675

因此,您的代码必须如下所示:

var amount = '50,000.00Fund Transfer to XXXX9090 Ref #0675'.match(/[\d,]+\.\d+/)[0]

如果这个数字必须是最左边的数字 - 像这样:

var amount = '50,000.00Fund Transfer to XXXX9090 Ref #0675'.match(/^[\d,]+\.\d+/)[0]

^在字符类的开头意味着not 而且你也缺少+ 您的表达式的含义not a digit or , or . and only once not a digit or , or . and only once

答案是/^[\\d,\\.]+//^[0-9,\\.]+/

试试这个 - \\d{1,3}(,\\d{3})*\\.\\d{2} 它应该只匹配那些用小数点分隔符(点. )和千位分隔符(逗号, )正确格式化的数字:

 const amount = '50,000.00Fund Transfer to XXXX9090 Ref #0675'.match(/\\d{1,3}(,\\d{3})*\\.\\d{2}/)[0]; console.log(amount)

您还可以匹配开头带有美元符号的数字,但您需要在正则表达式中转义该字符,因为它具有特殊含义(字符串结尾):

\\$\\d{1,3}(,\\d{3})*\\.\\d{2}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM