0009's Blog  
-- 夏天以南
日历
<2007年5月>
293012345
6789101112
13141516171819
20212223242526
272829303112
3456789

导航

我的链接

 

之前发过一个关于用JavaScript验证密码强度的,程序很简洁,只用了一个正则便能验证所有情况,但是因为利用了取巧的方法,所以只能在IE中使用,在FF中失效,现在修改一下做一个兼容的版本。

规则如下(分四个等级,等级超高强度越高):

0.
密码为空
1. 密码长度小于六位.或者密码只有一种组合
2. 密码长度大于五位, 且有两种组合.
3. 密码长度大于五位, 且有三种组合.
4. 密码长度大于五位, 且有四种组合.

四种组合指 数字,小写字母,大写字母,其它字符

源代码如下:
function EvaluatePassword(word)
{
    
if (word == "")
    {
        
return 0;
    }
    
else if (word.length < 6)
    {
        
return 1;
    }
    
else
    {
        
return word.match(/[a-z](?![^a-z]*[a-z])|[A-Z](?![^A-Z]*[A-Z])|\d(?![^\d]*\d)|[^a-zA-Z\d](?![a-zA-Z\d]*[^a-zA-Z\d])/g).length;
    }
}


测试代码:

<script language="JavaScript">
function EvaluatePassword(word)
{
    
if (word == "")
    {
        
return 0;
    }
    
else if (word.length < 6)
    {
        
return 1;
    }
    
else
    {
        
return word.match(/[a-z](?![^a-z]*[a-z])|[A-Z](?![^A-Z]*[A-Z])|\d(?![^\d]*\d)|[^a-zA-Z\d](?![a-zA-Z\d]*[^a-zA-Z\d])/g).length;
    }
}
var test = new Array("""a1_""abcdef""abcde123""ads23%""aA1B2^&2");
for(var i in test)
{
    document.write(test[i] 
+ " 的密码强度为" + EvaluatePassword(test[i]) + "<br>");
}
</script>


posted on 2007-05-08 12:58 0009 阅读(2007) 评论(11) 编辑 收藏
评论:
  • #1楼  傻大木[未注册用户] Posted @ 2007-05-08 14:08
    支持了,多谢分享  回复 引用   

  • #2楼  s3[未注册用户] Posted @ 2007-05-08 16:05
    不错  回复 引用   

  • #3楼  sapo34[未注册用户] Posted @ 2007-05-08 22:55
    不会用呀,怎么实现这样的效果呢?

    密码:<input id="txt" onblur="ck(this.value)"><label id=n></label>
    <script>
    function ck(t){
    n.innerText=/(?:^(w)1{0,8}$)|^(?:(0?1?2?3?4?5?6?7?8?9?0?)2?$)|^w{0,6}$/i.test(t)?'太简单了':'还行吧';
    }
    </script>
     回复 引用   

  • #4楼  fox23       Posted @ 2007-05-08 23:16
    汗颜,高手阿!
    请问阁下一般是用的什么编辑器 编写JS的阿?能推荐一下不?
     回复 引用 查看   

  • #5楼  IT_zen[未注册用户] Posted @ 2007-05-09 09:05
    楼主正则这么厉害啊,如何学的?  回复 引用   

  • #6楼[楼主]  0009       Posted @ 2007-05-09 09:35
    @sapo34

    密码:<input id="txt" onblur="CheckPassword(this.value)"><label id=n></label>
    <script>
    function EvaluatePassword(word)
    {
    if (word == "")
    {
    return 0;
    }
    else if (word.length < 6)
    {
    return 1;
    }
    else
    {
    return word.match(/[a-z](?![^a-z]*[a-z])|[A-Z](?![^A-Z]*[A-Z])|\d(?![^\d]*\d)|[^a-zA-Z\d](?![a-zA-Z\d]*[^a-zA-Z\d])/g).length;
    }
    }
    function CheckPassword(password)
    {
    document.getElementById("n").innerText = function (pwd)
    {
    switch (EvaluatePassword(pwd))
    {
    case 0:
    return "未输入";
    case 1:
    return "太简单";
    case 2:
    return "还可以";
    case 3:
    return "比较强";
    case 4:
    return "非常强";
    }
    }(password)
    }
    </script>
     回复 引用 查看   

  • #7楼[楼主]  0009       Posted @ 2007-05-09 09:37
    @fox23
    我还一直NotePad2+IE,感觉也很不方便.但一直没找到能用得顺手的JS编辑器.

    前两天找了一个1st JavaScript Editor 3.8感觉还可以,不过用得还不是很顺手.这个软件在CSDN下载频道上有破解补丁.
     回复 引用 查看   

  • #8楼[楼主]  0009       Posted @ 2007-05-09 09:38
    @IT_zen

    对正则比较感兴趣 :)

     回复 引用 查看   

  • #9楼  曼陀罗       Posted @ 2007-05-10 23:45
    ^_^
    崇拜死你啦
     回复 引用 查看   

  • #10楼  VisualStudio       Posted @ 2008-11-11 15:19
    zhe ge 兼容!  回复 引用 查看   

  • #11楼  木耳       Posted @ 2011-06-01 11:26
    崇拜  回复 引用 查看   

 
Copyright © 0009 Powered by: 博客园 模板提供:沪江博客