Jquery自定义验证非数字

时间:2012-04-12 22:41:42

标签: javascript regex validation jquery-validate

我正在尝试为jquery编写自定义验证函数。规则应该是该字段不能只是数字。我知道如何只写数字或只写alpha但我希望规则说值“12345”会失败,但“12345A”会被验证

这就是我对非数字

的看法
jQuery.validator.addMethod("nonNumeric", function(value, element) {
    return this.optional(element) || !value.match(/[0-9]+/);
},"Only alphabatic characters allowed.");

但我无法弄清楚如何只做数字。


工作脚本

以下是三个可能有用的规则,最后一个是回答这个问题的规则。

 jQuery.validator.addMethod("noSpace", function(value, element) { 
    return value.indexOf(" ") < 0 && value != ""; 
}, "No spaces please");

jQuery.validator.addMethod("alpha", function(value, element) {

    return this.optional(element) || /^[a-z]+$/i.test(value);
},"Letters only please.");

jQuery.validator.addMethod("nonNumeric", function(value, element) {
    return this.optional(element) || isNaN(Number(value));
},"String cannot be numeric");

4 个答案:

答案 0 :(得分:2)

使用parseInt(如果操作数不是严格的数字,则返回NaN),如下所示:

jQuery.validator.addMethod("nonNumeric", function(value, element) {
    return this.optional(element) || !isNaN(parseInt(value));
},"Only alphabatic characters allowed.");

在这种情况下请勿使用!=,否则您最终可能会使用this unpleasant situation


根据 Ken Browning 的评论,parseInt可能不合适。试试这个:

jQuery.validator.addMethod("nonNumeric", function(value, element) {
    return this.optional(element) || !isNaN(Number(value));
},"Only alphabatic characters allowed.");

答案 1 :(得分:1)

将正则表达式更改为:

(/.*[a-zA-Z]+.*/)

代码:

编辑1:

jQuery.validator.addMethod("nonNumeric", function(value, element) {
    return this.optional(element) || value.match(/.*[a-zA-Z]+.*/);
},"Only alphabatic characters allowed.");

答案 2 :(得分:1)

您可以使用

/[a-z]/i.test(value)

如果true包含a和z之间的任何字母,则返回value

i修饰符使测试用例不敏感。

有关.test()的详细信息,请查看MDN documentation

答案 3 :(得分:1)

我认为这个正则表达式应该足够了

/[a-z]/i.test(value);

用法

jQuery.validator.addMethod("nonNumeric", function(value, element) {
    return this.optional(element) || !(/[a-zA-Z]/i.test(value));
},"Only alphabatic characters allowed.");