密码的正则表达式如何来写?

我需要一个正则表达式来检查密码:

密码至少包含八个字符、至少包含一个数字、同时包含小写字母和大写字母以及特殊字符,例如#,?,!)

不能是旧密码或包含用户名,"password"或"websitename"

这里是我的验证表达式,用于限制:八个字符,包括一个大写字母,一个小写字母和一个数字或特殊字符。

(?=^.{8,}$)((?=.*\d)|(?=.*\W+))(?![.\n])(?=.*[A-Z])(?=.*[a-z]).*$"

那么,如何写一个正则,限制密码必须是八个字符,包括一个大写字母,一个特殊字符和字母数字字符?

最佳解决思路

至少八个字符,至少一个字母和一个数字:

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

至少八个字符,至少一个字母,一个数字和一个特殊字符:

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

最少八个字符,至少一个大写字母,一个小写字母和一个数字:

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

至少八个字符,至少一个大写字母,一个小写字母,一个数字和一个特殊字符:

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

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

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

次佳解决思路

可以使用这个正则表达式:

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

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

至少一个大写字母English letter,(?=.*?[A-Z])

至少一个小写英文字母,(?=.*?[a-z])

至少有一位数字,(?=.*?[0-9])

至少有一个特殊字符,(?=.*?[#?!@$%^&*-])

最小八个长度.{8,}(带锚)

第三种解决思路

正则表达式没有AND运算符,所以编写匹配有效的密码的正则表达式相当困难,特别是当有效性被某些东西AND别的东西等定义时...

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

任何少于八个字符或任何没有数字或任何没有大写字母或任何没有小写字母或任何没有特殊字符的任何字符串。

所以:

^(.{0,7}|[^0-9]*|[^A-Z]*|[^a-z]*|[a-zA-Z0-9]*)$

如果能匹配上这个正则表达式的话,这是一个无效的密码。

第四种思路

对最佳答案的一个小小的改进:由于特殊字符仅限于键盘中的特殊字符,因此可用于表达任何特殊字符:

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

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

至少一个大写英文字母

至少一个小写英文字母

至少一位数字

至少一个特殊字符

最少八个字符

第五种思路

在我的环境中,按照最佳答案来做,我遇到了一些困难。例如,对字符如;或[验证失败。我不想白名单列举我的特殊字符,所以我用[^\w\s]作为测试 - 只是放置匹配非字符(包括数字)和非空格字符。总而言之,这个做法对我来说比较有效...

至少8字符

至少1数字字符

至少1小写字母

至少1大写字母

至少1特殊字符

/^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[^\w\s]).{8,}$/

JSFiddle Link - 简单的涵盖各种情况的demo

第六种思路

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

就可以使用如下方法:

$.validator.addMethod("pwcheck", function (value) {

return /[\@\#\$\%\^\&\* \_\+\!]/.test(value) && /[a-z]/.test(value) && /[0-9]/.test(value) && /[A-Z]/.test(value)

});

这个正则表达式可以表达:

至少一张大写英文字母

至少一个小写英文字母

至少一位数字

至少一个特殊字符

第七种思路

满足如下条件:

最少六个字符

至少有一个大写字符

至少一个小写字符

至少一个特殊字符

正则表达式:

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

满足如下条件,且有可选特殊字符:

至少一个特殊字符

至少一个数字

特殊字符是可选的

最少6个字符,最多16个字符

正则表达式:

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

如果不需要最小和最大条件,可以删除.{6, 16}

6是最小字符数限制

20是最大字符限制

?=表示匹配表达式

第八种思路

需要满足的条件,以及对应的正则表达式:

Conditions: 1] Min 1 uppercase letter.

2] Min 1 lowercase letter.

3] Min 1 special character.

4] Min 1 number.

5] Min 8 characters.

6] Max 30 characters.

Regex: /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[#$@!%&*?])[A-Za-z\d#$@!%&*?]{8,30}$/

第九种思路

根据你的需要,下面这个正则表达式应该能正常工作的:

^(?=(.*\d){1})(.*\S)(?=.*[a-zA-Z\S])[0-9a-zA-Z\S]{8,}

只需创建一个字符串变量,分配模式,并创建一个布尔方法,如果模式匹配正确则返回true,否则返回false。

示例:

String pattern = "^(?=(.*\d){1})(.*\S)(?=.*[a-zA-Z\S])[0-9a-zA-Z\S]{8,}";

String password_string = "Type the password here"

private boolean isValidPassword(String password_string) {

return password_string.matches(Constants.passwordPattern);

}

第十种思路

试试这个正则表达式:

^.*(?=.{8,})(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%^&+=])[a-zA-Z0-9@#$%^&+=]*$

这个正则表达式对我来说非常完美。

function myFunction() {

var str = "c1TTTTaTTT@";

var patt = new RegExp("^.*(?=.{8,})(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%^&+=])[a-zA-Z0-9@#$%^&+=]*$");

var res = patt.test(str);

html5中密码要求有字母,转:正则表达式:密码必须至少包含八个字符、至少包含一个数字、小写和大写的字母以及特殊字符...相关推荐

  1. 正则表达式:密码必须至少包含八个字符、至少包含一个数字、小写和大写的字母以及特殊字符

    密码的正则表达式如何来写? 我需要一个正则表达式来检查密码: 密码至少包含八个字符.至少包含一个数字.同时包含小写字母和大写字母以及特殊字符,例如#,?,!) 不能是旧密码或包含用户名,"p ...

  2. 正则表达式:密码必须至少包含八个字符、至少包含一个数字、小写和大写的字母以及特殊字符...

    密码的正则表达式如何来写? 我需要一个正则表达式来检查密码: 密码至少包含八个字符.至少包含一个数字.同时包含小写字母和大写字母以及特殊字符,例如#,?,!) 不能是旧密码或包含用户名,"p ...

  3. python016--编写代码,在用户设置新的密码时进行判断,如果小于8则让用户重新设置,如果密码里面每含有一个数字,或大写字母,小写字母,标点符号,密码位数超过10则将密码等级加1分........

    目录 程序需求: 代码及其相应的注释: 程序需求: 编写代码,用户输入密码,password>=8, 如果password,在10位以上,含有数字,或大写字母,小写字母,标点符号 则加1分,总计 ...

  4. 编写C语言程序,输入一个以回车符结束的字符串(少于80个字符),统计并输出其中大写辅音字母的个数(大写辅音字母是除‘A’,‘E’,‘I’,‘O’,‘U’以外的大写字母)。

    #include <stdio.h>int main() {char str[80];int i, count = 0;printf("请输入一个字符串: ");get ...

  5. 密码的正则表达式必须包含至少八个字符,至少一个数字以及大小写字母和特殊字符

    本文翻译自:Regex for password must contain at least eight characters, at least one number and both lower ...

  6. mysql 正则替换 换行,MySQL中使用replace、regexp进行正则表达式替换的用法分析

    本文实例讲述了MySQL中使用replace.regexp进行正则表达式替换的用法.,具体如下: 今天一个朋友问我,如果将数据库中查到的类似于"./uploads/110100_cityHo ...

  7. 丰富网页摘要——HTML5中的“微数据”(MicroData)

    什么是"微数据" 大多数网络管理员都熟悉网页上的HTML标签,通常情况下,HTML标记告诉浏览器如何显示在标签中包含的信息. 例如, <h1>阿凡达</h1> ...

  8. 生成带大写英文字母和数字的验证码(手机或邮箱)

    最近由于编写项目的注册功能,需要一个能够生成带大写英文字母的验证码工具类,就写了一个 public class RandomUtil {//生成size长度的验证码,hasLetter决定是否带大写英 ...

  9. 正则表达式 密码需至少包含数字、字母、符号中的2种

    let reg=/((?=.*\d)(?=.*\D)|(?=.*[a-zA-Z])(?=.*[^a-zA-Z]))(?!^.*[\u4E00-\u9FA5].*$)/ let value=`12345 ...

最新文章

  1. 在树莓派中开发 opencv 大型程序
  2. requestAnimationFrame
  3. JUST技术:探查城市中的异常事件
  4. 如何搭建一个node 工程
  5. Docker小白到实战之Docker Compose在手,一键足矣
  6. 08-图7 公路村村通 (30 分
  7. VMware Workstation 8下Ubuntu 13.04中安装VMware Tools出错
  8. Doug Lea 在 J.U.C 包里面写的 BUG 又被网友发现了......
  9. DOS命令批量删除文件及制作该命令的批处理命令详解
  10. Java之拦截器与过滤器
  11. 计算机网络实验指导书 pdf,计算机网络实验指导书(新版).pdf
  12. 第七章-寻找软件的注册码
  13. 怎么显示文件后缀名?很容易的几个步骤
  14. Google Earth Engine(GEE)——R 语言图像概览
  15. 56 Marvin: 一个支持GPU加速、且不依赖其他库(除cuda和cudnn)的轻量化多维深度学习(deep learning)框架介绍...
  16. Vue2Editor 中文API
  17. 解决:Not found the kernel library or the kernel library is invalid
  18. 字节主管工程师年薪中位数 56.4 万美元,排世界第 7,2022 全球程序员收入报告出炉!...
  19. 查找单链表倒数第k个元素
  20. python技术分享

热门文章

  1. 全员“拉踩”苹果,入局一年多的苹果芯片已成“行业标杆”?
  2. 陕西广电 HGU B2 光猫获取超级密码 改桥接模式 提升网速
  3. Xz1android9打电话延迟,索尼Xperia XZ1系列更新Android 9.0
  4. springcloud(十一):服务网关 Spring Cloud GateWay 入门
  5. Springboot+vue整合
  6. A股-进阶-教你如何巧用K线缺口的赚钱攻略
  7. CHOPS 音乐驱动动画
  8. oracle rac 火星舱_火星高科数据保护技术使火星舱助用户完全解决相关需求
  9. 400分理科学计算机,400分左右的理科大学 高考400分能上什么学校
  10. 七夕如何向心爱的ta表白,看这里