[英]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+)?
,
但在这种情况下,您可能会捕获不需要的值,例如: 9090
和0675
。
因此,您的代码必须如下所示:
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.