任何人都可以帮我写下以下描述的正则表达式吗?要验证密码的JavaScript
密码包含从至少三个以下五类的字符:
- 英文大写字符(A - Z)
- 英文小写字符(A - Z)
- 10个基本数字( !0 - 9)
- 非字母数字(例如:,$#或%)
- Unicode字符
密码的最小长度是6.
任何人都可以帮我写下以下描述的正则表达式吗?要验证密码的JavaScript
密码包含从至少三个以下五类的字符:
密码的最小长度是6.
更好的处理方法是分割每个条件并为每个条件设置一个正则表达式。然后统计输入的密码有多少已满足。通过这种方式,您甚至可以告诉用户密码是否平均,符合标准或非常强大的密码。
if (password.length < 6) {
alert("password needs to be atleast 6 characters long");
}
var count = 0;
//UpperCase
if(/[A-Z]/.test(password)) {
count += 1;
}
//Lowercase
if(/[a-z]/.test(password)) {
count += 1;
}
//Numbers
if(/\d/.test(password)) {
count += 1;
}
//Non alphas(special chars)
if(/\W/.test(password)) {
count += 1;
}
if (count < 3) {
alert("password does not match atleast 3 criterias");
}
不知道如何使用正则表达式匹配unicode字符。休息所有条件都在上面提供。
这是一条评论,而不是答案。 (完全同意,顺便说一句) – 2010-09-09 07:36:02
更新了答案 – 2010-09-09 09:31:54
由于萨钦,它工作正常 – Abhimanyu 2010-09-09 09:42:22
[A-Za-z!$#%\d\u0100]{6}
比赛aS1%eĀ
。
\u0100
是为Â。你可以插入你需要的其他Unicode代码。你可以找到它们here。
编辑:至少6个字符正确的正则表达式是[A-Za-z!$#%\d\u0100]{6,}
。编辑2:要包含一系列的Unicode字符(让它是拉丁字母扩展-B),正则表达式应该看起来像^[A-Za-z!$#%\d\u0100-\u017f]{6,}$
。您可以找到Unicode代码范围here。
编辑3:我开发了一个小函数来检查给定的密码是否符合标准。您需要在函数中定义unicode范围。
function isValidPassword(password) {
var unicodeRange = "\\u0100-\\u0105";
var criteria = ["A-Z","a-z","\\d","!$#%",unicodeRange];
// check whether it doesn't include other characters
var re = new RegExp("^[" + criteria.join("") +"]{6,}$");
if(!re.test(password)) return false;
var minSatisfiedCondition = 3;
var satisfiedCount = 0;
for(var i=0; i < criteria.length; i++) {
re = new RegExp("[" + criteria[i] + "]");
if(re.test(password)) ++satisfiedCount;
}
return (satisfiedCount >= minSatisfiedCondition);
}
有一个工作样品here。
为什么downvote? OP不希望创建基于Javascript的登录,而是在用户指定密码时进行简单验证。 – 2010-09-09 07:34:32
关于伪强密码的一些旧评论:http://www.codinghorror.com/blog/2005/07/passwords-vs-pass-phrases.html – Douglas 2010-09-09 08:24:15
对于正则表达式来说,这不是一个简单的任务。正如Sachin在他的anser中提出的那样,编写你自己的字符串解析例程将会更容易,并且如果你的标准匹配,它会被计数。 – splash 2010-09-09 08:33:10