Regex 正则表达式只允许负数

Regex 正则表达式只允许负数,regex,Regex,这听起来似乎是一个相当普遍的问题,但我已经搜索了很多,找不到任何有效的。我正在使用jquery验证插件来验证表单输入。有一个字段只需要接受负数(可以是整数或小数,但必须小于零) 我试过这样做: $.validator.addClassRules("negativeNumber", { range: [-1000000000, 0] }); …工作正常,但验证错误非常可怕(“请输入一个介于-100000000和0之间的数字”)-我希望它只说“请输入一个负数” 有人能告诉我一个只允许负数的

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

我试过这样做:

    $.validator.addClassRules("negativeNumber", { range: [-1000000000, 0] });
…工作正常,但验证错误非常可怕(“请输入一个介于-100000000和0之间的数字”)-我希望它只说“请输入一个负数”

有人能告诉我一个只允许负数的正则表达式的方向吗

非常感谢各位…

我想
\-\d*(\.?\d+)
可以

\-
匹配负号

\d*
匹配零位或多位数字(用于说明-5之类的情况)

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


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

使用自定义验证方法将更容易:

jQuery.validator.addMethod('negativeNumber', function(value, element) {
    return this.optional(element) || (+value < 0);
}, 'Please enter a negative number');
jQuery.validator.addMethod('negativeEnumber',函数(值,元素){
返回此值。可选(元素)| |(+值<0);
},“请输入负数”);
这比regex好得多(可能更快),让浏览器为您解析数字,而不是自己使用regex



当然,也可以使用
max
方法,尽管那里的消息不是很好。

您可以添加一个正则表达式,而不是正则表达式,我相信它更容易阅读

$.validator.addMethod('negativeNumber',
    function (value) { 
        return Number(value) < 0;
    }, 'Enter a negative number');
$.validator.addMethod('NegativeEnumber',
函数(值){
返回编号(值)<0;
},“输入负数”);

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


包括-00001、-100000和-1

是的!太棒了,谢谢。我会在我能回答的时候马上做标记:)谢谢!尽管我觉得有义务说,实现这一点的典型方法是验证方法。所以,如果你想接受其他答案中的一个,这不会伤害我的感情。如果你用我的,我会很感激接受:)@CaffGeek我假设了一个格式标准,但我想你是对的,当我们接受用户输入时。编辑我在下面发布了正则表达式,它是
\-\d*(\.\d+)
@superetsingh它不匹配整个表达式“-4-4”,它匹配“-4”两次,因为regexr(默认情况下)将全局(/g)标志添加到模式中。您可以通过单击右上角的“标志”并取消选择“全局”将其关闭。完成后,它将只匹配第一个“-4”。