密码强度正则表达式 – 必须包含大写字母,小写字母和数字,至少8个字符等

发表于 2017年09月8日 by 天涯孤雁 被浏览 3,953 次 分享到:
小编推荐:掘金是一个高质量的技术社区,从 ECMAScript 6 到 Vue.js,性能优化到开源类库,让你不错过前端开发的每一个技术干货。各大应用市场搜索「掘金」即可下载APP,技术干货尽在掌握..

需要一个密码强度正则表达式在用户注册时校验用户密码强度:密码至少8个字符,包括1个大写字母,1个小写字母和1个数字或特殊字符,例如#,?,!。网上搜索了一些解决方案分享给大家。

方案一

至少8-16个字符,至少1个大写字母,1个小写字母和1个数字,其他可以是任意字符:

/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[^]{8,16}$/

或者:

/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[\s\S]{8,16}$/

其中 [\s\S] 中的\s空白符,\S非空白符,所以[\s\S]是任意字符。也可以用 [\d\D]、[\w\W]来表示。

至少8个字符,至少1个大写字母,1个小写字母和1个数字,不能包含特殊字符(非数字字母):

^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d]{8,}$

至少8个字符,至少1个字母,1个数字和1个特殊字符:

^(?=.*[A-Za-z])(?=.*\d)(?=.*[[email protected]$!%*#?&])[A-Za-z\[email protected]$!%*#?&]{8,}$

至少8个字符,至少1个大写字母,1个小写字母和1个数字:

^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[a-zA-Z\d]{8,}$

至少8个字符,至少1个大写字母,1个小写字母,1个数字和1个特殊字符:

^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[[email protected]$!%*?&])[A-Za-z\[email protected]$!%*?&]{8,}

最少8个最多十个字符,至少1个大写字母,1个小写字母,1个数字和1个特殊字符:

^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[[email protected]$!%*?&])[A-Za-z\[email protected]$!%*?&]{8,10}

方案二

还有,你可以使用这个正则表达式:

^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[#[email protected]$%^&*-]).{8,}$

这个正则表达式将强制执行这些规则:

至少1个大写字母English letter,(?=.*?[A-Z])
至少1个小写英文字母,(?=.*?[a-z])
至少1位数字,(?=.*?[0-9])
至少有1个特殊字符,(?=.*?[#[email protected]$%^&*-])
最小8个长度.{8,}
方案三

正则表达式没有AND运算符,所以编写正则表达式与有效密码匹配是非常困难的,当有效性被某些东西和其他东西等定义时…

但是,正则表达式确实有1个OR运算符,所以只需应用DeMorgan的定理,并编写1个与无效密码相匹配的正则表达式:

任何少于8个字符或任何没有数字或任何没有大写字母或任何没有小写字母或任何没有特殊字符的任何东西。

所以:^(.{0,7}|[^0-9]*|[^A-Z]*|[^a-z]*|[a-zA-Z0-9]*)$,如果有什么匹配的话,这是1个无效的密码。

方案四

由于特殊字符仅限于键盘中的特殊字符,因此可用于任何特殊字符:

^(?=.*?[A-Z])(?=(.*[a-z]){1,})(?=(.*[\d]){1,})(?=(.*[\W]){1,})(?!.*\s).{8,}$

这个正则表达式将强制执行这些规则:
– 至少1个大写英文字母
– 至少1个小写英文字母
– 至少1位数字
– 至少1个特殊字符
– 最少8个长度

方案五

根据我的情况,我遇到了最受欢迎的答案。例如,我的验证失败,其中包含;或[等字符。我对 white-listing 我的特殊字符不感兴趣,所以我用[^\w\s]作为测试 – 简单地把非字符(包括数字)和非空格字符放在一起。总而言之,这是对我有用的

至少8字符
至少1数字字符
至少1小写字母
至少1大写字母
至少1特殊字符
/^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[^\w\s]).{8,}$/ 简单演示涵盖各种情况

方案六

导入JavaScript文件jquery.validate.min.js。

您可以使用此方法:

JavaScript 代码:
$.validator.addMethod("pwcheck", function (value) {
return /[\@\#\$\%\^\&\*\(\)\_\+\!]/.test(value) && /[a-z]/.test(value) && /[0-9]/.test(value) && /[A-Z]/.test(value)
});
至少1个大写英文字母
至少1个小写英文字母
至少1位数字
至少1个特殊字符
方案七

尝试这个:
– 最少6个字符
– 至少有1个大写字符
– 至少1个小写字符
– 至少1个特殊字符

表达式:

/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[[email protected]$!%*?&.])[A-Za-z\[email protected]$!%*?&.]{6, 20}/

可选特殊字符:

至少1个特殊字符
至少1个数字
特殊字符是可选的
最少6个字符,最多16个字符
表达式:

/^(?=.*\d)(?=.*[a-zA-Z]).{6,20}$/

如果不需要最小和最大条件,则删除.{6, 16}
– 6是最小字符数限制
– 20是最大字符限制
– ?=表示匹配表达式

 正文完。下面还有一个推广让最好的人才遇见更好的机会!

互联网行业的年轻人,他们面对着怎样的职业瓶颈、困惑与未来选择?过去,这鲜有人关心。资深的职场人,也多半优先选择熟人去推荐机会。

100offer致力于改变现状,帮互联网行业最好的人才发现更好的机会。使用 100offer.com 或 100offer App ,可以一周内获得中国、美国等数千家优质企业的工作机会。

http://www.css88.com/archives/8100

原文地址:https://www.cnblogs.com/behindman/p/9125350.html

时间: 2024-11-07 21:06:45

密码强度正则表达式 – 必须包含大写字母,小写字母和数字,至少8个字符等的相关文章

c语言代码编程题汇总 :统计字符串中的大写和小写字母的个数

统计字符串中的大写和小写字母的个数 程序代码如下: 1 /* 2 2017年3月6日19:42:21 3 功能:统计字符串中的大写和小写字母的个数 4 */ 5 6 #include "stdio.h" 7 void fun (char *,int *,int *); 8 9 int main (void) 10 { 11 int m = 0,n = 0; 12 int *Pm = &m, *Pn = &n; 13 char s[100]; 14 printf (&qu

在一个字符串中,统计大写字母个数,小写字母个数,其他字符个数的四种算法

题目描述:编写程序,输出字符串中的大写字母.小写小母和其他的个数.如有一个字符串"Helle, This is A test textfile.123456, tannk you!!",则其大写字母个数:3,小写字母个数:29,其他字符个数:18. 这里提供了四种算法,第一种是我们比较好理解的,也属于硬编码问题,其他三种方法要借助JAVA语言的jdk提供的api. 方法一: <!DOCTYPE html> <html lang="en"> &

多平台实现密码强度(Javascript 、android、ios)

密码强度是目前很常用的一种功能,密码强度的实现,在web端都很好实现,可以很轻松的使用Javascript方法实现,目前因为项目需要,要在手机app上也实现密码强度,并且同时要在Android和ios上都实现相同功能,密码复杂度,无外乎大写字母.小写字母.数字和特殊符号,且需要加上重复字符出现的次数等,一般常用的方法都是使用正则表达式. 查阅了很多资料,网上在app端实现密码强度的例子基本没有(手机QQ是调用的web页面,支付根本没有密码复杂度),且又要web端和app端的三种语言通用,没办法只

小写字母置前

问题: 有一个由大小写组成的字符串,现在需要对它进行修改,将其中的所有小写字母排在大写字母的前面(大写或小写字母之间不要求保持原来次序). 解决办法: 设置2个指针i和j,i最初指向字符串的第一个位置,j指向字符串的最后一个位置: i向后遍历直到遇到第一个大写字符,j向前遍历直到遇到第一个小写字母,交换i和j位置上的字符: 直到i=j+1,结束:注意交换前需要判断i是否小于j,否则最后的两个字符不正确. ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18

(转)求正则表达式,密码必须包含大写字母、小写字母、数字

1.必须只能是 大写字母.小写字母和数字构成的密码2.大写字母.小写字母.数字都至少出现一次 import java.util.regex.Pattern; import java.util.regex.Matcher; public class RegexRegexTest2 { public static boolean checkPassword(String password){ if(password.matches("\\w+")){ Pattern p1= Pattern

验证数字,大写字母,小写字母,特殊字符四选三组成的密码强度,且长度在8到30个数之间

验证数字,大写字母,小写字母,特殊字符四选三组成的密码强度,且长度在8到30个数之间 表达式: ^(?![a-zA-Z]+$)(?![A-Z0-9]+$)(?![A-Z\[email protected]#$%^&*`~()-+=]+$)(?![a-z0-9]+$)(?![a-z\[email protected]#$%^&*`~()-+=]+$)(?![0-9\[email protected]#$%^&*`~()-+=]+$)[a-zA-Z0-9\[email protecte

写一个6位随机验证码程序,要求验证码中至少包含一个数字,一个小写字母,一个大写字母

import random,string src_list = []src_list.append(str(random.randint(1,9))) #生成一个数字src_list.append(random.sample(string.ascii_lowercase,1)[0]) #生成一个小写字母src_list.append(random.sample(string.ascii_uppercase,1)[0]) #生成一个大写字母three = random.sample(string.

正则表达式验证密码强度

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

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

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