7

我正在尝试(但失败)编写一个正则表达式语句来检查特殊字符,例如 !@#$%^&*()_+<>?'"{}[] 在我的 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");
4

3 回答 3

33

不要从头开始编写自己的自定义方法,而是包含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");
于 2013-02-19T03:29:41.163 回答
10

变化不大

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 方法的值。

演示:小提琴

注意:由于您使用的是+通配符,因此文本框中至少需要一个字符,您可能希望使用该required规则将其拆分为两条规则,并将通配符更改为*.

于 2013-02-19T03:25:44.120 回答
2
^[a-zA-Z0-9;,.!@#$%:{}[]?"^&*()/\']*|[^&;<>\`]*

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

于 2017-01-09T05:26:46.750 回答