javascript - 货币的正则表达式

标签 javascript regex

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

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

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

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

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

我试过了

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

但它没有满足我的要求。建议我如何实现这一目标。

最佳答案

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

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

参见 regex demo

解释:

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

document.body.innerHTML = /^(?!0+\.0+$)\d{1,3}(?:,\d{3}|\d)*\.\d{2}$/.test("1,150.25");
document.body.innerHTML += "<br/>" + /^(?!0+\.0+$)\d{1,3}(?:,\d{3}|\d)*\.\d{2}$/.test("0.25");

document.body.innerHTML += "<br/>" + /^(?!0+\.0+$)\d{1,3}(?:,\d{3})*\.\d{2}$/.test("25");
document.body.innerHTML += "<br/>" + /^(?!0+\.0+$)\d{1,3}(?:,\d{3})*\.\d{2}$/.test("0.00");
document.body.innerHTML += "<br/>" + /^(?!0+\.0+$)\d{1,3}(?:,\d{3})*\.\d{2}$/.test("1150.25");

关于javascript - 货币的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37595165/

相关文章:

python - Pandas 在一个月的一天时间从字符串的其余部分 split

javascript - 可拖放不能在 table 上工作

javascript - 如何添加多个模态

javascript - 尝试让我的按钮在没有用户交互的情况下更改文本 javascript

python - 从文本中删除正则表达式数字

php - 行不更新

python - 如果是空格,如何在不删除分隔符的情况下进行拆分

javascript - Ajax 成功调用未执行

javascript - 如何使用 react-sortable-hoc (Table) 自动滚动?

regex - vbscript 中检查字符串是否包含多个单词/短语列表中的单词/短语的最快方法