我正在尝试从具有数字,逗号和点的字符串中提取金额$50,000.00
。我的代码如下:
var amount = '$50,000.00Fund Transfer to XXXX9090 Ref #0675'.match(/[^0-9,.]/);
答案 0 :(得分:1)
如果数字中需要点,则可以使用[\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]
答案 1 :(得分:1)
NULL
表示C
。而且您也缺少^
。
您表达的意思是not
答案是
+
或not a digit or , or . and only once
答案 2 :(得分:0)
试试这个-\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}