我有一个正则表达式,用于检查输入字段中是否只包含数字:
if (paymentAmount.match(/[^0-9\.,]/g)) ... show error
我还需要检查值之前是否还有0。例如,0001.23
应该抛出错误,但1.23应该没问题。
有没有办法将其添加到当前的正则表达式检查中?
答案 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个或多个零。