货币的正则表达式

Rol*_*wal 2 javascript regex

我是正则表达式概念的新手。

我试图制作货币正则表达式,其中

  1. 金额应该是格式化的数字字符串,使用 ',' 作为千位分隔符和 '.' 为小数点分隔符。

  2. 金额应精确到小数点后两位

  3. 金额应该是一个非零的正值

我试过这个

test1= /^\d{1,3}?([,]\d{3}|\d)*?\.\d\d$/;
test1.test(1,100.00);
Run Code Online (Sandbox Code Playgroud)

但它不能满足我的要求。建议我如何实现这一点。

Wik*_*żew 6

如果你想禁止0.00值,并允许没有数字分组符号的数字,你可以使用

 /^(?!0+\.0+$)\d{1,3}(?:,\d{3})*\.\d{2}$/.test(your_str)
Run Code Online (Sandbox Code Playgroud)

查看正则表达式演示

说明

  • ^ - 字符串的开始
  • (?!0+\.0+$) - 如果输入为零则匹配失败的负前瞻
  • \d{1,3} - 1 到 3 位数字
  • (?:,\d{3})* - 0+ 个逗号序列,后跟 3 位数字
  • \. - 一个文字点
  • \d{2} - 2 位数字(小数部分)
  • $ - 字符串的结尾。

 /^(?!0+\.0+$)\d{1,3}(?:,\d{3})*\.\d{2}$/.test(your_str)
Run Code Online (Sandbox Code Playgroud)