【发布时间】:2012-01-11 16:09:54
【问题描述】:
我正在尝试在 JavaScript 中创建一个正则表达式测试,该测试将测试一个字符串是否包含以下任何字符:
!$%^&*()_+|~-=`{}[]:";'<>?,./
如果您有兴趣了解更多信息 :)
这是我正在开发的一个非常酷的密码更改应用程序。如果您有兴趣,这里是其余的代码。
我有一个列出密码要求的表格,当最终用户键入新密码时,它将测试一个正则表达式数组并在相应的表格行中放置一个复选标记,如果它...签出 :) 我只需要添加这个来代替 validation 数组中的第 4 项。
var validate = function(password){
valid = true;
var validation = [
RegExp(/[a-z]/).test(password), RegExp(/[A-Z]/).test(password), RegExp(/\d/).test(password),
RegExp(/\W|_/).test(password), !RegExp(/\s/).test(password), !RegExp("12345678").test(password),
!RegExp($('#txtUsername').val()).test(password), !RegExp("cisco").test(password),
!RegExp(/([a-z]|[0-9])\1\1\1/).test(password), (password.length > 7)
]
$.each(validation, function(i){
if(this)
$('.form table tr').eq(i+1).attr('class', 'check');
else{
$('.form table tr').eq(i+1).attr('class', '');
valid = false
}
});
return(valid);
}
是的,还有相应的服务器端验证!
【问题讨论】:
-
很有趣,你的问题的答案在于标题,除了转义特殊字符和包含正斜杠。
-
为什么不使用
.addClass("check")和.removeClass("check")?在代码中看到if (someBoolean == true)总是让我畏缩。只需执行if (someBoolean)。或者,更好的是,只需$(".form table tr").eq(i+1).toggleClass("check", !!this); valid = valid && !!this;。 -
+1 @gill3 感谢代码审查 - 确实有很好的反馈。我过去使用过这些速记方法。
-
@gilly3,它似乎在 FF 中运行良好,但在 IE8 中。喜欢这个速记。我试图弄清楚 IE8 的不同之处。
标签: javascript jquery regex