• 全部
  • C#综合技术
  • C#互联网桌面应用
  • AppLauncher
  • WinForm&WPF
  • C#开发新技术
  • 问答

求一密码复杂度检查的函数 有没有正则表达式的高手在啊?

冷箫轻笛 中集集团 智能制造系统高级经理  2009-09-22 11:57:28
要求对一字符串的复杂度 进行检查


密码符合以下长度/复杂性要求才可以接受
一, 密码最少长度为 6位 ,并至少包含3种复杂类别的字符 (如 Abc134 或者 abc12# 符合 如abc123 123<>( 就不符合)
二 密码最少长度为 8位 ,并至少包含2种复杂类别的字符 (如 Abc21334 或者 abcd1234 符合 如12345678 abcdefg就不符合)
三, 密码的复杂类别由拉丁、西里尔或希腊字母组成
复杂类别说明
1 大写字母 如:A B C....Z
2 小写字母 如:a b c....z
3 西文阿拉伯数据 如:0 1 2...9
4 其他字符(“特殊字符”、标点、符号 如:{ } [] , < > @ $ % & ^ ( ) _ + =

一 二 条符合其中一条即可

如何判断改字符串是否符合呢??
有没有高手 好人帮帮忙?
...全文
821 点赞 收藏 13
写回复
13 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
wanghao2979 2010-12-15
[Quote=引用 9 楼 chen_xiangguo 的回复:]
引用 7 楼 wuyi8808 的回复:
C# code"^(?:(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])|(?=.*[A-Z])(?=.*[a-z])(?=.*[^A-Za-z0-9])|(?=.*[A-Z])(?=.*[0-9])(?=.*[^A-Za-z0-9])|(?=.*[a-z])(?=.*[0-9])(?=.*[^A-Za-z0-9])).{6,}|(?:……
[/Quote]


顶....走了csdn 这么久.热心的人还真是多哦
回复
-过客- 2009-09-23

Regex reg = new Regex("^((?![{}\[\],<>@$%&^()_+=0-9]+$)(?![{}\[\],<>@$%&^()_+=a-z]+$)(?![{}\[\],<>@$%&^()_+=A-Z]+$)(?![A-Z0-9]+$)(?![A-Za-z]+$)(?![a-z0-9]+$)[{}\[\],<>@$%&^()_+=0-9a-zA-Z]{6}|(?![{}\[\],<>@$%&^()_+=]+$)(?![0-9]+$)(?![a-z]+$)(?![A-Z]+$)[{}\[\],<>@$%&^()_+=0-9a-zA-Z]{8})$");
if(reg.IsMatch(yourStr))
//符合
else
//不符合
回复
zhangyanyang 2009-09-23
study
回复
随风落梦 2009-09-22
up!!!!
回复
mythad 2009-09-22
up
回复
wiki14 2009-09-22

function checkPass(pass){

if(s.length < 8){

return 0;
}
var ls = 0;

if(s.match(/([a-z])+/)){

ls++;

}

if(s.match(/([0-9])+/)){

ls++;
}

if(s.match(/([A-Z])+/)){

ls++;

}
if(s.match(/[^a-zA-Z0-9]+/)){

ls++;

}
return ls

}
if(checkPass(form.password.value)<3){

alert("密码复杂度不够,请重新设置!");

form.password.focus();

return false ;
}



路过帮顶。
回复
zhanlang9075 2009-09-22
学习le,帮顶,关注zh
回复
chen_xiangguo 2009-09-22
[Quote=引用 7 楼 wuyi8808 的回复:]
C# code"^(?:(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])|(?=.*[A-Z])(?=.*[a-z])(?=.*[^A-Za-z0-9])|(?=.*[A-Z])(?=.*[0-9])(?=.*[^A-Za-z0-9])|(?=.*[a-z])(?=.*[0-9])(?=.*[^A-Za-z0-9])).{6,}|(?:(?=.*[A-Z])(?=.*[a-z])¡­
[/Quote]
空军,你太强了!
回复
-空军- 2009-09-22
using System;
using System.Text.RegularExpressions;

class Program
{
static void Main()
{
string[] array = { "A2wee", "###123", "!!isok!!234", "ijk#A", "QWERtyuiop", "ABCD1234" };
Regex r = new Regex("^(?:(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])|(?=.*[A-Z])(?=.*[a-z])(?=.*[^A-Za-z0-9])|(?=.*[A-Z])(?=.*[0-9])(?=.*[^A-Za-z0-9])|(?=.*[a-z])(?=.*[0-9])(?=.*[^A-Za-z0-9])).{6,}|(?:(?=.*[A-Z])(?=.*[a-z])|(?=.*[A-Z])(?=.*[0-9])|(?=.*[A-Z])(?=.*[^A-Za-z0-9])|(?=.*[a-z])(?=.*[0-9])|(?=.*[a-z])(?=.*[^A-Za-z0-9])|(?=.*[0-9])(?=.*[^A-Za-z0-9])|).{8,}");
foreach (string s in array)
{
Console.WriteLine("{0}: {1}", r.IsMatch(s) ? "Yes" : " No", s);
}
}
}
/* 输出:
No: A2wee
No: ###123
Yes: !!isok!!234
No: ijk#A
Yes: QWERtyuiop
Yes: ABCD1234
*/
回复
-空军- 2009-09-22
"^(?:(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])|(?=.*[A-Z])(?=.*[a-z])(?=.*[^A-Za-z0-9])|(?=.*[A-Z])(?=.*[0-9])(?=.*[^A-Za-z0-9])|(?=.*[a-z])(?=.*[0-9])(?=.*[^A-Za-z0-9])).{6,}|(?:(?=.*[A-Z])(?=.*[a-z])|(?=.*[A-Z])(?=.*[0-9])|(?=.*[A-Z])(?=.*[^A-Za-z0-9])|(?=.*[a-z])(?=.*[0-9])|(?=.*[a-z])(?=.*[^A-Za-z0-9])|(?=.*[0-9])(?=.*[^A-Za-z0-9])|).{8,}"
回复
litepos 2009-09-22
关注下下
回复
wuyq11 2009-09-22
function checkPassword(pwd)
{
var p1= (pwd.search(/[a-zA-Z]/)!=-1) ? 1 : 0;
var p2= (pwd.search(/[0-9]/)!=-1) ? 1 : 0;
var p3= (pwd.search(/[^A-Za-z0-9_]/)!=-1) ? 1 : 0;
}
回复
相关推荐
综教楼后的那个坑用双向链表实现 描述   在 LIT 综教楼后有一个深坑,关于这个坑的来历,有很多种不同的说法。其中一种说法是,在很多年以前,这个坑就已经在那里了。这种说法也被大多数人认可,这是因为该坑有一种特别的结构,想要人工建造是有相当困难的。   从横截面图来看,坑底成阶梯状,由从左至右的 1..N 个的平面构成(其中 1 ≤ N ≤ 100,000),如图:    *            * :    *            * :    *            * 8    *    **      * 7    *    **      * 6    *    **      * 5    *    ********* 4 <- 高度    *    ********* 3    ************** 2    ************** 1 平面 |  1  |2|   3    | 每个平面 i 可以用两个数字来描述,即它的宽度 Wi 和高度 Hi,其中 1 ≤ Wi ≤ 1,000、1 ≤ Hi ≤ 1,000,000,而这个坑最特别的地方在于坑底每个平面的高度都是不同的。每到夏天,雨水会把坑填满,而在其它的季节,则需要通过人工灌水的方式把坑填满。灌水点设在坑底位置最低的那个平面,每分钟灌水量为一个单位(即高度和宽度均为 1)。随着水位的增长,水自然会向其它平面扩散,当水将某平面覆盖且水高达到一个单位时,就认为该平面被水覆盖了。   请你计算每个平面被水覆盖的时间。    灌水 水满后自动扩散 | | * | * * | * * * * V * * V * * * * * * .... * *~~~~~~~~~~~~* * ** * *~~~~** : * *~~~~**~~~~~~* * ** * *~~~~** : * *~~~~**~~~~~~* * ** * *~~~~**~~~~~~* *~~~~**~~~~~~* * ********* *~~~~********* *~~~~********* *~~~~********* *~~~~********* *~~~~********* ************** ************** ************** ************** ************** **************    4 分钟后    26 分钟后        50 分钟后    平面 1 被水覆盖     平面 3 被水覆盖    平面 2 被水覆盖输入   输入的第一行是一个整数 N,表示平面的数量。从第二行开始的 N 行上分别有两个整数,分别表示平面的宽度和高度。 输出   输出每个平面被水覆盖的时间。
发帖
C#
创建于2007-09-28

10.5w+

社区成员

.NET技术 C#
申请成为版主
帖子事件
创建了帖子
2009-09-22 11:57
社区公告

让您成为最强悍的C#开发者