3
A
回答
1
这是在默认情况下使用ASP.NET MVC进来jquery.validate.js
和jquery.validate.min.js
文件数量正则表达式中的错误3.
下面是从jquery.validate.js
代码,行1048:
// http://docs.jquery.com/Plugins/Validation/Methods/number
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+|\d{1,3}(?:,\d{3})+)(?:\.\d+)?$
正则表达式读作:
^-?
Beginning of line or string
-, zero or one repetitions
Match expression but don't capture it. [\d+|\d{1,3}(?:,\d{3})+]
Select from 2 alternatives
Any digit, one or more repetitions
\d{1,3}(?:,\d{3})+
Any digit, between 1 and 3 repetitions
Match expression but don't capture it. [,\d{3}], one or more repetitions
,\d{3}
,
Any digit, exactly 3 repetitions
Match expression but don't capture it. [\.\d+], zero or one repetitions
\.\d+
Literal .
Any digit, one or more repetitions
End of line or string
正如你所看到的,第二个捕获组(?:\.\d+)?
允许号码.XX
格式,但匹配时,第一组(?:\d+|\d{1,3}(?:,\d{3})+)
首先检查和验证失败因为第一组必须与匹配。
如果我们要参考http://docs.jquery.com/Plugins/Validation/Methods/number演示并检查它们的数字验证的正则表达式,它将如下所示:^-?(?:\d+|\d{1,3}(?:,\d{3})+)?(?:\.\d+)?$
。这与越野车相同,但现在第一匹配组应该是zero or one repetitions
或换句话说可选的。这个额外的?
正则表达式修正了错误。
编辑:这也适用于MVC 4默认模板。这两个模板都使用1.9.0版本的插件。在版本1.10.0中,此问题已修复。 From changelog:
- 修复了不带前导零的小数的正则表达式问题。增加了新的方法测试。修复#41
所以有时候保持更新是一个好主意。
相关问题
- 1. MVC数据注释范围验证工作不正常
- 2. 与数据注释验证方法的参数属性
- 3. 验证注释和属性文件
- 4. 带有注释的Actionscript类属性数据验证
- 5. 本地化数据注释自定义验证属性
- 6. 两个范围数据注释MVC
- 7. 验证范围
- 8. 数据验证范围Django和xlsxwriter
- 9. 数据注释验证程序
- 10. MVC 3数据注释关闭验证
- 11. 数据注释/验证和动态值
- 12. 验证使用数据的注释
- 13. Uploadify和ASP.NET数据注释/验证
- 14. mvc4范围验证小数
- 15. jQuery的“数据”属性不W3C验证
- 16. 将验证属性注入验证属性Web Api Asp.Net Core
- 17. CDI拦截范围注释
- 18. 使用数据注释自定义模型验证依赖属性
- 19. 如何以编程方式打开/关闭数据注释验证属性
- 20. 合并数据注释属性
- 21. 数据注释MVC3必需属性
- 22. 如何验证虚拟属性范围上的Rails模型属性唯一性
- 23. 在asp.net中验证数据注释的唯一性mvc
- 24. Asp.net范围验证
- 25. 验证javax.persistance注释?
- 26. Java注释验证
- 27. Rspec的验证唯一性范围
- 28. 唯一性验证器:范围约束
- 29. MVC3不显示数据注释的不显眼验证
- 30. 验证消息对于范围属性MVC