这听起来像是一个相当普遍的问题,但我搜索了很多,找不到任何有用的东西。我正在使用jquery validate插件来验证表单输入。有一个字段只需要接受负数(可以是整数或小数,但必须小于零)。
我尝试过这样的事情:
$.validator.addClassRules("negativeNumber", { range: [-1000000000, 0] });
...哪个有效,但验证错误很糟糕(“请输入介于-1000000000和0之间的数字”) - 我希望它只是说“请输入一个负数”。
有人能指出我只允许负数的正则表达方向吗?
非常感谢大家......
答案 0 :(得分:5)
您可以添加custom validation method代替正则表达式,我相信这更容易阅读。
$.validator.addMethod('negativeNumber',
function (value) {
return Number(value) < 0;
}, 'Enter a negative number');
答案 1 :(得分:3)
我认为\-\d*(\.?\d+)
会这样做。
\-
匹配减号
\d*
匹配零个或多个数字(以解决类似-.5的问题)
\.?
匹配一个小数点,如果它在那里
\d*
匹配零个或多个数字
答案 2 :(得分:1)
这将匹配小于0 \-\d*(\.\d+)?
包括-.00001,-100000和-1
答案 3 :(得分:0)
使用自定义验证方法会更容易:
jQuery.validator.addMethod('negativeNumber', function(value, element) {
return this.optional(element) || (+value < 0);
}, 'Please enter a negative number');
这比正则表达式更好(也可能更快),让浏览器为你解析数字,而不是用正则表达式自己做。
或者,当然,使用max
方法,虽然那里的信息不太好。