加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

密码的正则表达式

发布时间:2020-12-14 01:56:32 所属栏目:百科 来源:网络整理
导读:检测密码是否能过强度检测(正则表达式检测) /// summary /// 检测密码是否能过强度检测(正则表达式检测) /// 要求密码长度最少8位最多25位,包含至少1个特殊字符,2个数字,2个大写字母和一些小写字母 /// /summary /// param name="password"密码明文/param

检测密码是否能过强度检测(正则表达式检测)

/// <summary>
/// 检测密码是否能过强度检测(正则表达式检测)
/// 要求密码长度最少8位最多25位,包含至少1个特殊字符,2个数字,2个大写字母和一些小写字母
/// </summary>
/// <param name="password">密码明文</param>
public static bool CheckPasswordStrangth(string username,string password) {
if (username.Equals(password,StringComparison.OrdinalIgnoreCase)
|| password.ToLower().Contains(username.ToLower())) {
return false;
}
if (password.Length <= 8) {
return false;
}
/* 要求密码长度最少8位,包含至少1个特殊字符,1个数字,1个大写字母和一些小写字母 */
string regexText = @"(?=^.{8,25}$)(?=(?:.*?d){1})(?=.*[a-z])(?=(?:.*?[A-Z]){1})(?=(?:.*?[!@#$%*()_+^&}{:;?.]){1})(?!.*s)[0-9a-zA-Z!@#$%*()_+^&]*$";
System.Text.RegularExpressions.Regex regex = new System.Text.RegularExpressions.Regex(regexText);
return regex.IsMatch(password);
}

密码验证,密码强度正则表达式

当用户登录网站时,一般要求用户提供登录该网站的用户名称和密码。从某种意义上说,密码的复杂程度越高,用户的信息安全性越高。因此,很多网站在注册用户信息或修改用户密码时,往往会提供一个密码强度的说明,从而提醒用户使用高强度的密码。

目前来说,密码字符可以分为3种:数字、字母和特殊字符(即除数字、字母之外的字符)。用户密码包含上述3种字符种的种类越多,密码的安全性越高。用户密码只含其中一种的安全性是最低的,如123455abcdef等。其次是含上述2种字符的密码,如123abc123!@#等。密码强度最好的是:包含上述3种字符,如123QAZ!@#

注意:本小节中的特殊字符包括`-=[];',./~!@#$%^&*()_+|?><":{}字符。

  1.只包含数字的密码验证

  如果密码中只包含数字,那么该密码是非常简单。当然,它的安全性也相对较差。以下正则表达式能够验证只包含数字的密码。

d+(68)

该类型密码的安全性随着密码的长度增加而增加。密码长度越大,它的安全性越高。以下正则表达式能够验证长度至少为6的、只包含数字的密码。

d{6,}(69)

  2.只包含字母的密码验证

  如果密码中只包含字母,那么该密码是非常简单。当然,它的安全性也相对较差。以下正则表达式能够验证只包含字母的密码。

[a-zA-Z]+(70)

该类型密码的安全性随着密码的长度增加而增加。密码长度越大,它的安全性越高。以下正则表达式能够验证长度至少为6的、只包含字母的密码。

[a-zA-Z]{6,}(71)

  3.只包含特殊字符的密码验证

  如果密码中只包含特殊字符,那么该密码是非常简单。当然,它的安全性也相对较差。以下正则表达式能够验证只包含特殊字符的密码。

[-`=[];',./~!@#$%^&*()_+|{}:"<>?]+(72)

  正则表达式(72)解释:

q表示字符

q[表示字符[

q]表示字符]

q其他的每一个字符就表示字符本身。

  该类型密码的安全性随着密码的长度增加而增加。密码长度越大,它的安全性越高。以下正则表达式能够验证长度至少为6的、只包含特殊字符的密码。

(73)

  使用工具Regex Tester测试正则表达式(73),结果如图4.34所示。

4.4.5 密码验证(2)

  4.当且仅当含数字和字母的密码验证

  如果密码当且仅当包含数字和字母,那么该密码的强度是中等强度。当然,它的安全性一般。以下正则表达式能够验证当且仅当包含数字和字母的密码。

[da-zA-Z]*d+[a-zA-Z]+[da-zA-Z]*(74)

  正则表达式(74)解释:

d匹配长度至少1的、由数字组成的字符串。

[a-zA-Z]+匹配长度至少1的、由字母组成的字符串。

[da-zA-Z]*匹配空字符串,或者长度至少1的、由数字或字母组成的字符串。

d+[a-zA-Z]+保证密码既包含了数字又包含特殊字符。

  使用工具Regex Tester测试正则表达式(74),结果如图所示。

  5.当且仅当含数字和特殊字符的密码验证

  如果密码当且仅当包含数字和特殊字符,那么该密码的强度是中等强度。当然,它的安全性一般。以下正则表达式能够验证当且仅当包含数字和特殊字符的密码。

[-d`=[];',./~!@#$%^&*()_+|{}:"<>?]*d+[-`=[];',./~!@#$%^&*()_+|{}:"<>?]+[-d`=[];',./~!@#$%^&*()_+|{}:"<>?]*(75)

  正则表达式(75)解释:

字符类[-d`=[];',./~!@#$%^&*()_+|{}:"<>?]+d表示任意数字;表示字符[表示字符[]表示字符];其他的每一个字符就表示字符本身。该字符类可以匹配数字或者特殊字符。

d+匹配最小长度为1的、由数字组成的字符串。

[-`=[];',./~!@#$%^&*()_+|{}:"<>?]+匹配最小长度为1的、由特殊字符组成的字符串。

d+[-`=[];',./~!@#$%^&*()_+|{}:"<>?]+保证密码既包含了数字又包含特殊字符。

  使用工具Regex Tester测试正则表达式(75),结果如图所示。

6.当且仅当包含字母和特殊字符的密码验证

  如果密码当且仅当包含字母和特殊字符,那么该密码的强度是中等强度。当然,它的安全性一般。以下正则表达式能够验证只包含字母和特殊字符的密码。

[-a-zA-Z`=[];',./~!@#$%^&*()_+|{}:"<>?]*[a-zA-Z]+[-`=[];',./~!@#$%^&*()_+|{}:"<>?]+[-a-zA-Z`=[];',./~!@#$%^&*()_+|{}:"<>?]*(76)

  正则表达式(76)解释:

字符类[-a-zA-Z`=[];',./~!@#$%^&*()_+|{}:"<>?]+a-z表示小写字母;A-Z表示大写字母;表示字符[表示字符[]表示字符];其他的每一个字符就表示字符本身。该字符类可以匹配字母或者特殊字符。

[a-zA-Z]+匹配最小长度为1的、由字母组成的字符串。

[-`=[];',./~!@#$%^&*()_+|{}:"<>?]+匹配最小长度为1的、由特殊字符组成的字符串。

[a-zA-Z]+[-`=[];',./~!@#$%^&*()_+|{}:"<>?]+保证密码既包含了字母又包含特殊字符。

  使用工具Regex Tester测试正则表达式(76),结果如图所示。

  7.当且仅当包含数字、字母和特殊字符的密码验证

  如果密码当且仅当包含数字、字母和特殊字符,那么该密码的强度是高强度。当然,它的安全性相对比较好。以下正则表达式能够验证当且仅当包含数字、字母和特殊字符的密码。

[-da-zA-Z`=[];',./~!@#$%^&*()_+|{}:"<>?]*

(

(d+[a-zA-Z]+[-`=[];',./~!@#$%^&*()_+|{}:"<>?]+)#数字开头

|(d+[-`=[];',./~!@#$%^&*()_+|{}:"<>?]+[a-zA-Z]+) #数字开头

|([a-zA-Z]+d+[-`=[];',./~!@#$%^&*()_+|{}:"<>?]+) #字母开头

|([a-zA-Z]+[-`=[];',./~!@#$%^&*()_+|{}:"<>?]+d+) #字母开头

|([-`=[];',./~!@#$%^&*()_+|{}:"<>?]+d+[a-zA-Z]+) #特殊字符开头

)

(77)

  正则表达式(77)解释:

d+匹配最小长度为1的、由数字组成的字符串。

[a-zA-Z]+匹配最小长度为1的、由字母组成的字符串。

[-`=[];',./~!@#$%^&*()_+|{}:"<>?]+匹配最小长度为1的、由特殊字符组成的字符串。

d+[a-zA-Z]+[-`=[];',./~!@#$%^&*()_+|{}:"<>?]+匹配型如“数字+字母+特殊字符”类型的字符串。

(d+[-`=[];',./~!@#$%^&*()_+|{}:"<>?]+[a-zA-Z]+)匹配型如“数字+特殊字符+字母”类型的字符串。

[a-zA-Z]+d+[-`=[];',./~!@#$%^&*()_+|{}:"<>?]+匹配型如“字母+数字+特殊字符”类型的字符串。

[a-zA-Z]+[-`=[];',./~!@#$%^&*()_+|{}:"<>?]+d+匹配型如“字母+特殊字符+数字”类型的字符串。

[-`=[];',./~!@#$%^&*()_+|{}:"<>?]+d+[a-zA-Z]+匹配型如“特殊字符+数字+字母”类型的字符串。

[-`=[];',./~!@#$%^&*()_+|{}:"<>?]+[a-zA-Z]+d+匹配型如“特殊字符+字母+数字”类型的字符串。

字符类[-da-zA-Z`=[];',./~!@#$%^&*()_+|{}:"<>?]*d表示任意数字;a-z表示小写字母;A-Z表示大写字母;表示字符[表示字符[]表示字符];其他的每一个字符就表示字符本身。该字符类可以匹配数字、字母或者特殊字符。

  使用工具Regex Tester测试正则表达式(77),结果如图所示。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读