下面这段代码是我从网上搜来的,是用js来检验密码的等级的
经过测试发现,我用的例子在ie中得到的结果是
===========> 0
a1_ ===========> 1
abcdef ===========> 1
abcde123 ===========> 2
ads23% ===========> 3
aA1B2^&2 ===========> 4
而在ff中得到的结果却是
===========> 0
a1_ ===========> 1
abcdef ===========> 1
abcde123 ===========> 1
ads23% ===========> 1
aA1B2^&2 ===========> 1
两种不同的结果,请问这个问题怎么解决?
------代码部分--------
/* 检验密码强度
1. 密码长度小于或等于五位.或者密码只有一种组合
2. 密码长度大于五位, 且有两种组合.
3. 密码长度大于五位, 且有三种组合.
4. 密码长度大于五位, 且有四种组合.
如果没有输入则返回0
*/
function EvaluatePwd(word)
{
return word.replace(/^(?:([a-z])|([A-Z])|([0-9])|(.)){6,}|(.)+$/g, "$1$2$3$4$5 ").length;
}
var test = new Array( " ", "a1_ ", "abcdef ", "abcde123 ", "ads23% ", "aA1B2^&2 ");
var str = " ";
for(var i in test)
{
str += test[i] + " ===========> " + Evaluate(test[i])+ " <br> ";
}
document.write(str);
------解决方案--------------------
昏 非得用这种变形的方法 尽管思路不错 但确实是取巧的写法 建议还是用下面的方式保险点
if(/\d/.test(word))i++;
if(/\W/.test(word))i++;
if(/[a-z]/.test(word))i++;
if(/[A-Z]/.test(word))i++;
------解决方案--------------------
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
※以下是引用7楼 mingxuan3000(铭轩) 在2007-5-4 0:12:37 的发言:
──────────────────────────────────────────
查了好几个小时,现在我还没搞懂为什么在ie下回显示每类最后一个
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
确实是这样的,你可以在.net等其它正则引擎下测试.都能得出这样的结果,FF却不是