构建正则表达式以从密码字段中排除字符/,\,'和“。
$(':password').keyup(function () {
if ($(this).val().match(/^['"\\\/]+$/)) {
$(this).css("border", "5px solid red");
} else {
$(this).css("border", "5px solid green");
};
});
如果密码字段包含任何非法字符,则输入字段周围的边框应为红色。似乎发生的事情是它只在字段包含非法字符时才执行此操作。在许多非法的字符中输入合法字符会使字符串再次被接受。
我做错了什么?
由于
答案 0 :(得分:0)
问题是您使用特殊字符(^
和$
)来表示字符串的开头和结尾作为匹配的一部分(从而匹配整个字符串);如果你删除那些,那么它在任何时候都匹配任何“非法”字符;这给出了正则表达式:
/['"\\\/]+/
为了简明起见,你也可以整理一下:
$(':password').keyup(function () {
var $this = $(this);
$this.css('border', function(){
return '5px solid ' + ($this.val().match(/['"\\\/]+/) ? 'red' : 'green');
});
});
顺便提一下,在可用的地方,使用input[type="password"]
而不是:password
会更有效率;这是因为前者可以在可用的地方传递给浏览器的本地document.querySelectorAll()
,而不是使用Sizzle来解析文档(使用jQuery / Sizzle特定的选择器)。
参考文献: