jQuery Validate方法检查特殊字符

时间:2013-02-19 03:17:33

标签: jquery regex jquery-validate

我正在尝试(并且失败)编写一个正则表达式语句,在我的Javascript中检查特殊字符,如!@#$%& *()_ +<>?'“{} []表格验证。

据我所知,这可能已被问过1000次,但我正面临一些严重的时间压力。如果你不想回答下面的问题,你可以指出我对上述问题的回答,我将不胜感激。

在类似的说明中,任何人都可以告诉我为什么当我输入小写的'abc'等时出现以下错误?我很困惑。

jQuery.validator.addMethod("specialChars", function( value, element ) {
        var regex = new RegExp("^[a-zA-Z0-9]+$");
        var key = String.fromCharCode(event.charCode ? event.which : event.charCode);

        if (!regex.test(key)) {
           event.preventDefault();
           return false;
        }
    }, "please use only alphanumeric or alphabetic characters");

3 个答案:

答案 0 :(得分:31)

不要从头开始编写自己的自定义方法,而是添加additional-methods.js文件并使用alphanumeric规则。

$(document).ready(function () {

    $('#myform').validate({
        rules: {
            field: {
                alphanumeric: true
            }
        }
    });

});

演示:http://jsfiddle.net/YsAKx/


如果您不想包含其他外部文件,只需复制默认的alphanumeric方法即可...

jQuery.validator.addMethod("alphanumeric", function(value, element) {
    return this.optional(element) || /^\w+$/i.test(value);
}, "Letters, numbers, and underscores only please");

答案 1 :(得分:7)

几乎没有变化

jQuery.validator.addMethod("specialChars", function( value, element ) {
        var regex = new RegExp("^[a-zA-Z0-9]+$");
        var key = value;

        if (!regex.test(key)) {
           return false;
        }
        return true;
    }, "please use only alphanumeric or alphabetic characters");
  1. 如果测试有效,则需要返回值true
  2. 验证程序不是事件处理程序,因此您无法使用event.preventDefault(),这必须在keypress事件中完成。
  3. 您需要测试传递给validate方法的值。
  4. 演示:Fiddle

    注意:由于您使用+ wild char,文本框中至少需要一个字符,您可能希望使用required规则将其拆分为两个规则,并将wild char更改为*

答案 2 :(得分:1)

^[a-zA-Z0-9;,.!@#$%:{}[]?"^&*()/\']*|[^&;<>\`]*

你想要在这个[]大括号^[a-zA-Z0-9;,.!@#$%:{}[]?"^&*()/\']中添加特殊字符,你不想在这里添加这个部分[^&;<>\]`