数字验证正则表达式

Number validate regex

本文关键字:正则表达式 验证 数字      更新时间:2023-09-26

在jquery.validate.js中,这个正则表达式用于验证一个数字。问题是它在0.33上失败了,在0.33上通过了。我需要让它通过,或者不通过,前导0。

^-?(?:'d+|'d{1,3}(?:,'d{3})+)(?:'.'d+)?$

试试这个

^-?(?:'d+|'d{1,3}(?:,'d{3})+)?(?:'.'d+)?$

额外的问号(点出它!)将使小数点前的所有部分都可选。

正向前看,如(?=[.]),可用于确保字符串以点开始(.)或遵循先前定义的模式。

^-?(?:(?=[.])|'d+|'d{1,3}(?:,'d{3})+)(?:'.'d+)?$

有更简单的方法来判断一个字符串是否指向一个数字——

function isNumber(str){
    return parseFloat(str)=== Number(str);
}

这可能有点晚了,但我有一个更好的答案。试试这个:

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

上面的refpsolendil的解将接受像0,123,456000,123这样的数字为有效。这些显然不是有效的数字。

此解决方案确保第一个逗号之前的部分以非零数字开头。它还处理refp指出的空字符串问题。