我正在尝试为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");
答案 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.");