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
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+$)
-1到3位数字\d{1,3}
-0+后跟3位数字的逗号序列(?:,\d{3})*
-文字点\。
-2位数字(小数部分)\d{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
,为什么它应该是假的?然后,您需要删除该选项。我更新了答案。非常感谢。它真的很管用。我还不熟悉正则表达式,这对我很有帮助