检验密码强度的JS类

本文源于维生素C.net的一篇文章利用数学方法来大大降低一个逻辑判断实现的难度的例子

    <script type="text/javascript">
        
var PasswordStrength ={
            Level : [
"高,实在是高","还行啦","靠,这样也行"],
            LevelValue : [
30,20,0],//强度值
            Factor : [1,2,5],//字符加数,分别为字母,数字,其它
            KindFactor : [0,0,10,20],//密码含几种组成的加数 
            Regex : [/[a-zA-Z]/g,/\d/g,/[^a-zA-Z0-9]/g] //字符正则数字正则其它正则
            }

        PasswordStrength.StrengthValue 
= function(pwd)
        
{
            
var strengthValue = 0;
            
var ComposedKind = 0;
            
for(var i = 0 ; i < this.Regex.length;i++)
            
{
                
var chars = pwd.match(this.Regex[i]);
                
if(chars != null)
                
{
                    strengthValue 
+= chars.length * this.Factor[i];
                    ComposedKind 
++;
                }

            }

            strengthValue 
+= this.KindFactor[ComposedKind];
            
return strengthValue;
        }
 
        PasswordStrength.StrengthLevel 
= function(pwd)
        
{
            
var value = this.StrengthValue(pwd);
            
for(var i = 0 ; i < this.LevelValue.length ; i ++)
            
{
                
if(value >= this.LevelValue[i] )
                    
return this.Level[i];
            }

        }

       
        alert(PasswordStrength.StrengthLevel(
"23")); 
        alert(PasswordStrength.StrengthLevel(
"abcd123"));     
        alert(PasswordStrength.StrengthLevel(
"abcd!%23"));  
    
</script>
posted @ 2006-05-14 11:07 Lyn 阅读(3369) 评论(6)  编辑 收藏 所属分类: DHTML & Javascript

  回复  引用    
#1楼 2006-05-15 10:34 | Hello孤独的鱼 [未注册用户]
var chars = pwd.match(this.Regex[i]);这句话不知道如何转换成.net
中的表示方式
  回复  引用  查看    
#2楼 [楼主]2006-05-15 10:42 | THIN      
MatchCollection mc = this.Regexes[i].Matches(pwd);

  回复  引用    
#3楼 2006-05-15 10:57 | Hello孤独的鱼 [未注册用户]
在.net中是不是做这样的比较呢:
MatchCollection mc = regs[i].Matches(sPwd);

if (mc != null)
{
iStrengthValue += mc.Count * factor[i];
iComposedKind++;
}

好像结果不对呢
  回复  引用    
#4楼 2006-05-15 10:59 | Hello孤独的鱼 [未注册用户]
new Regex("/[a-zA-Z]/g"), new Regex(@"/\d/g"), new Regex("/[^a-zA-Z0-9]/g")
好像没有串被捕获呢,不知道什么原因
  回复  引用  查看    
#5楼 [楼主]2006-05-15 11:09 | THIN      
你先看看.net下的正则式写法
new Regex(@"[a-zA-Z]")
  回复  引用  查看    
#6楼 2006-05-15 21:32 | 维生素C.NET      
非常感谢THIN哥

标题  
姓名  
主页
Email (博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      


相关链接: