使用javascript中的常规exp验证数字,但在一种情况下不起作用

validate number with regular exp in javascript not working for one case

本文关键字:不起作用 情况下 一种 javascript 常规 exp 数字 验证 使用      更新时间:2023-09-26

我正在尝试用正则表达式验证数字字段integer和decimal。除了一位数之外,它在所有情况下都能正常工作:-

$(document).ready(function(){
    $("#quantity").on('blur',function(){
        var quantity = $('#quantity').val() 
        var pattern = /^-?'d+'.?([0-9]{1,2})$/;
        alert(pattern.test(quantity))
    })
})

输出:

1 ---> false (why?)
-
9 ---> false (why?)
5.87 -->true (fine)
12.35 ---> true  (fine)
12.344 --->false (fine)
2323.34 --->true (fine)

对于1到9,它的警报True,但我需要它作为false

字符串中同时有'd+[0-9]{1,2},这意味着字符串中必须至少有2位数字(中间有一个可选的小数)。

如果你想让整个小数部分是可选的,只需用括号将其括起来,并添加一个?量词:

/^-?'d+('.[0-9]{1,2})?$/