Javascript 货币的正则表达式

Javascript 货币的正则表达式,javascript,regex,Javascript,Regex,我不熟悉正则表达式的概念 我试图使货币正则表达式,其中 金额应该是一个格式化的数字字符串,使用“,”表示千位分隔符,使用“.”表示十进制分隔符 金额应精确到小数点后2位 金额应为非零的正值 我试过这个 test1= /^\d{1,3}?([,]\d{3}|\d)*?\.\d\d$/; test1.test(1,100.00); 但它不能满足我的要求。请告诉我如何实现这一点。如果您的最小值为1.00: ^[1-9]\d{0,2}(?:,\d{3})*\.\d\d$ 这不允许前导零。如果不允许0

我不熟悉正则表达式的概念

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

  • 金额应该是一个格式化的数字字符串,使用“,”表示千位分隔符,使用“.”表示十进制分隔符

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

  • 金额应为非零的正值

  • 我试过这个

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

    但它不能满足我的要求。请告诉我如何实现这一点。

    如果您的最小值为
    1.00

    ^[1-9]\d{0,2}(?:,\d{3})*\.\d\d$
    

    这不允许前导零。

    如果不允许
    0.00
    值,并且允许数字不带数字分组符号,可以使用

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

    说明

    • ^
      -字符串的开头
    • (?!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(“1150.25”);
    document.body.innerHTML++=“
    ”+/^(?0+\.0+$)\d{1,3}(?:,\d{3}}\d)*\.\d{2}$/.test(“0.25”); document.body.innerHTML++=“
    ”+/^(?!0+\.0+$)\d{1,3}(?:,\d{3})*\.\d{2}$/.test(“25”); document.body.innerHTML++=“
    ”+/^(?!0+\.0+$)\d{1,3}(?:,\d{3})*\.\d{2}$/.test(“0.00”);
    document.body.innerHTML++=“
    ”+/^(?!0+\.0+$)\d{1,3}(?:,\d{3})*\.\d{2}$/.test(“1150.25”)我认为您测试了
    test1.test(“1100.00”),是吗?尝试可能的重复井,OP没有提到它,但如果允许前导零,这也不会起作用。@WiktorStribiżew:对,我添加了一个关于的通知。这在(1150.25)的情况下是真的,在我的情况下应该是假的。如果在替换中添加
    \d
    ,为什么它应该是假的?然后,您需要删除该选项。我更新了答案。非常感谢。它真的很管用。我还不熟悉正则表达式,这对我很有帮助