密码字段正则表达式使用jquery val()。匹配

时间:2014-02-19 07:44:30

标签: jquery regex

构建正则表达式以从密码字段中排除字符/,\,'和“。

$(':password').keyup(function () {

    if ($(this).val().match(/^['"\\\/]+$/)) {
        $(this).css("border", "5px solid red");
    } else {
        $(this).css("border", "5px solid green");
    };

});

如果密码字段包含任何非法字符,则输入字段周围的边框应为红色。似乎发生的事情是它只在字段包含非法字符时才执行此操作。在许多非法的字符中输入合法字符会使字符串再次被接受。

我做错了什么?

由于

http://jsfiddle.net/8qLr6/8/

1 个答案:

答案 0 :(得分:0)

问题是您使用特殊字符(^$)来表示字符串的开头和结尾作为匹配的一部分(从而匹配整个字符串);如果你删除那些,那么它在任何时候都匹配任何“非法”字符;这给出了正则表达式:

/['"\\\/]+/

JS Fiddle demo

为了简明起见,你也可以整理一下:

$(':password').keyup(function () {
    var $this = $(this);
    $this.css('border', function(){
        return '5px solid ' + ($this.val().match(/['"\\\/]+/) ? 'red' : 'green');
    });
});

JS Fiddle demo

顺便提一下,在可用的地方,使用input[type="password"]而不是:password会更有效率;这是因为前者可以在可用的地方传递给浏览器的本地document.querySelectorAll(),而不是使用Sizzle来解析文档(使用jQuery / Sizzle特定的选择器)。

参考文献: