一个正则表达式验证密码强度

private int CheckSecurity(string pwd)
{
    return Regex.Replace(pwd, "^(?:([a-z])|([A-Z])|([0-9])|(.)){6,}|(.)+$", "$1$2$3$4$5").Length;
}

在网上看过很多种验证密码强度的方法,但无一不长篇大论。

今天无意发现一种很牛X的方法,利用正则,且只有一句话就搞定了。

大概介绍一下:

密码字符包括:小写字母、大写字母、数字、符号等;

这个正则会得到五个捕获组,前四个捕获组会告诉我们这个字符串包含有多少种组合(返回多少个匹配代表多少种组合)

如果这个字符串小于6位的话,则会得到第五个捕获组,长度为1(即强度为1),如果没有输入,就连捕获组5都不会得到(强度为0)

虽然是一句话的函数,但却考了好多个正则的知识点:范围、包含、长度、捕获、替换。膜拜一下!

不过作者貌似说还有待改进,我想,应该是特殊字符,例如全角字符不能正确识别的问题吧。正常使用不受影响。

时间: 2024-10-28 22:53:16

一个正则表达式验证密码强度的相关文章

正则表达式验证密码强度

private int CheckSecurity(string pwd) { return Regex.Replace(pwd, "^(?:([a-zA-Z])|([0-9])|(.)){9,}|(.)+$", "$1$2$3$4").Length; } 在网上看过很多种验证密码强度的方法,但无一不长篇大论. 今天无意发现一种很牛X的方法,利用正则,且只有一句话就搞定了. 大概介绍一下: 密码字符包括:小写字母.大写字母.数字.符号等: 这个正则会得到五个捕获组,

Python 使用正则表达式验证密码必须包含大小写字母和数字

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px ".PingFang SC Light" } p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px "Helvetica Neue" } span.s1 { font: 14.0px "Helvetica Neue" } span.s2 { font: 14.0px ".PingF

验证密码强度是否符合要求

密码强度要求: 1.密码长度至少为8个字符 2.至少要有一个大写英文或者小写字母 3.最少包含一个数字 备注:该方法也可以拆成4个if判断,可以针对不同的情况,对注册客户进行提示. 1 public static bool PasswordStrength(string password) 2 { 3 if (password.Length <8) 4 { 5 return false; 6 } 7 if (0 - Convert.ToInt32(Regex.IsMatch(password,

js正则表达式之密码强度验证

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-

初学js正则表达式之密码强度验证

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-

JavaScript验证密码强度

JavaScript的方法: 1 <script type="text/javascript"> 2 window.onload = function () { 3 document.getElementById('txt').onkeydown = function () { 4 5 //获取td 6 var tds = document.getElementById('tb').getElementsByTagName('td'); 7 for (var i = 0;

JS的常用正则表达式 验证密码用户名等

JS的正则表达式 //校验是否全由数字组成 function isDigit(s){var patrn=/^[0-9]{1,20}$/;if (!patrn.exec(s)) return falsereturn true} //校验登录名:只能输入5-20个以字母开头.可带数字.“_”.“.”的字串Java代码function isRegisterUserName(s)  {  var patrn=/^[a-zA-Z]{1}([a-zA-Z0-9]|[._]){4,19}$/;  if (!p

js 正则表达式验证密码、邮箱格式.....

遗憾的是博客内容不允许包含js代码,不能在线测试,就只上代码了 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Regular Expression test</title> </head> <body> 用户名:(4-16位,字母.下划线.数字,减号) <br/> <input type="

ios使用常用正则表达式验证密码身份证手机号

#pragma 正则匹配手机号 + (BOOL)checkTelNumber:(NSString *) telNumber { NSString *pattern = @^1+[3578]+\d{9}; NSPredicate *pred = [NSPredicate predicateWithFormat:@SELF MATCHES %@, pattern]; BOOL isMatch = [pred evaluateWithObject:telNumber]; return isMatch;