正则表达式只允许负数

时间:2012-09-27 14:59:44

标签: regex

这听起来像是一个相当普遍的问题,但我搜索了很多,找不到任何有用的东西。我正在使用jquery validate插件来验证表单输入。有一个字段只需要接受负数(可以是整数或小数,但必须小于零)。

我尝试过这样的事情:

    $.validator.addClassRules("negativeNumber", { range: [-1000000000, 0] });

...哪个有效,但验证错误很糟糕(“请输入介于-1000000000和0之间的数字”) - 我希望它只是说“请输入一个负数”。

有人能指出我只允许负数的正则表达方向吗?

非常感谢大家......

4 个答案:

答案 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方法,虽然那里的信息不太好。