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

时间:2020-02-28 10:02:33

标签: javascript regex

我正在尝试从具有数字,逗号和点的字符串中提取金额$50,000.00。我的代码如下:

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

3 个答案:

答案 0 :(得分:1)

如果数字中需要点,则可以使用[\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]

答案 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}

相关问题