我只有一个允许的数字的正则表达式,但也需要一个浮动0

时间:2016-06-20 21:55:33

标签: regex

我有一个正则表达式,用于检查输入字段中是否只包含数字:

if (paymentAmount.match(/[^0-9\.,]/g)) ... show error

我还需要检查值之前是否还有0。例如,0001.23应该抛出错误,但1.23应该没问题。

有没有办法将其添加到当前的正则表达式检查中?

2 个答案:

答案 0 :(得分:2)

你可以用这个:

if (paymentAmount.match(/^(?!([1-9]\d*|0)(\.\d\d?)?$)/)) ...

这也将检测带有两个小数点的输入,以及小数超过2的数字。

以下是一些测试:



function numCheck(paymentAmount) {
	console.log(paymentAmount, 
               (paymentAmount.match(/^(?!([1-9]\d*|0)(\.\d\d?)?$)/)) 
                   ? ' error' : ' ok');
}

numCheck("1.0");
numCheck("1.0.0");
numCheck("01.0");
numCheck("1");
numCheck("10.09");
numCheck("10.");
numCheck(".01");
numCheck("10.0901");




然而,进行阳性测试更为直接,即确认格式正确的测试。您可以随时使用!否定结果:

if (!paymentAmount.match(/^([1-9]\d*|0)(\.\d\d?)?$/)) ...

答案 1 :(得分:0)

你可以这样做:

if ( /[^0-9.,]/g.test(paymentAmount) || /^0+[1-9.]/.test(paymentAmount) ) {
   // ... show error
}

^0+[1-9]将在任意数字[1-9]或小数点之前匹配1个或多个零。