3

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

我试过做这样的事情:

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

...这很好,但验证错误很可怕(“请输入一个介于 -1000000000 和 0 之间的数字”) - 我只想说“请输入一个负数”。

谁能指出我只允许负数的正则表达式的方向?

非常感谢各位...

4

4 回答 4

5

您可以添加自定义验证方法,而不是正则表达式,我相信它更易于阅读。

$.validator.addMethod('negativeNumber',
    function (value) { 
        return Number(value) < 0;
    }, 'Enter a negative number');
于 2012-09-27T15:08:07.033 回答
2

我认为\-\d*(\.?\d+)会这样做。

\-匹配减号

\d*匹配零个或多个数字(考虑-.5之类的东西)

\.?匹配小数点(如果存在)

\d*匹配零个或多个数字

于 2012-09-27T15:01:59.373 回答
1

这将匹配任何小于 0\-\d*(\.\d+)?

包括 -.00001、-100000 和 -1

于 2012-09-27T15:10:14.710 回答
0

使用自定义验证方法会容易得多:

jQuery.validator.addMethod('negativeNumber', function(value, element) {
    return this.optional(element) || (+value < 0);
}, 'Please enter a negative number');

这比正则表达式更好(并且可能更快),让浏览器为您解析数字,而不是自己使用正则表达式。


或者,当然,使用该max方法,尽管那里的消息不太好。

于 2012-09-27T15:07:05.317 回答