Jquery验证-是否允许数字不带前导零?

Jquery验证-是否允许数字不带前导零?,jquery,asp.net-mvc-2,jquery-validate,Jquery,Asp.net Mvc 2,Jquery Validate,我使用jquery验证()如下: 如果用户输入的数字没有前导零,例如5,那么jquery验证会说“请输入一个有效的数字。” 如何更改验证以允许数字输入而不需要前导零?问题在于用于数字的正则表达式。看看第1021-1023行,我们有: number: function(value, element) { return this.optional(element) || /^-?(?:\d+|\d{1,3}(?:,\d{3})+)(?:\.\d+)?$/.test(value); }, 问

我使用jquery验证()如下:

如果用户输入的数字没有前导零,例如5,那么jquery验证会说“请输入一个有效的数字。”


如何更改验证以允许数字输入而不需要前导零?

问题在于用于数字的正则表达式。看看第1021-1023行,我们有:

number: function(value, element) {
    return this.optional(element) || /^-?(?:\d+|\d{1,3}(?:,\d{3})+)(?:\.\d+)?$/.test(value);
},
问题在于,第一个块(查找前导负号和数字)不是可选的,它可以是单个的,也可以是以逗号分隔的三个一组的:

(?:\d+|\d{1,3}(?:,\d{3})+)
(?:\d+|\d{1,3}(?:,\d{3})+)?
钉在末端将使其成为可选:

(?:\d+|\d{1,3}(?:,\d{3})+)
(?:\d+|\d{1,3}(?:,\d{3})+)?
通过此更新,您可以修改插件的本地副本,将正则表达式更改为修改后的版本,或者向javascript添加:

jQuery.validator.addMethod("number", function(value, element) {
    return this.optional(element) || /^-?(?:\d+|\d{1,3}(?:,\d{3})+)?(?:\.\d+)?$/.test(value);
}, "Please enter a valid number.");

在使用此
addMethod
调用的任何页面上,将覆盖
number
验证方法,以执行不需要前导零的数字验证。

jQuery validation 1.14.0中包含的解决方案会处理前导零问题,但会留下前导负号问题。-。124无效-0.124是有效的。上面帖子中提供的正则表达式似乎允许-0.124,因此我更喜欢它,而不是jQuery Validation 1.14.0中的解决方案,谢谢-这个问题已经好几个月没有答案了!没问题。这让我想起了我一直在构建的一个系统,我一直在寻找你的问题的答案。我已经给插件创建者发了电子邮件,征求他对正则表达式的反馈,如果没有问题的话,还有关于插件修复的反馈。非常有用的答案。我在解决方案中遇到了一个小问题:jQuery.validator.addMethod(“数字”…应该是jQuery.validator.addMethod(“数字”)仅供参考,此修复程序已整合到脚本的v1.10.0中,于2012-09-07发布。正式发布和拉取请求