我想要一个正则表达式来检查:
密码至少包含八个字符,包括至少一个数字,包括小写和大写字母以及特殊字符,例如 #
, ?
, !
.
它不能是您的旧密码或包含您的用户名, "password"
或 "websitename"
这是我的验证表达式,用于八个字符,包括一个大写字母,一个小写字母和一个数字或特殊字符 .
(?=^.{8,}$)((?=.*\d)|(?=.*\W+))(?![.\n])(?=.*[A-Z])(?=.*[a-z]).*$"
我怎么能为 a password must be eight characters including one uppercase letter, one special character and alphanumeric characters 写它?
23 回答
试试这个:
最少六个字符
至少一个大写字符
至少一个小写字符
至少有一个特殊字符
Expression:
可选特殊字符:
至少有一个特殊字符
至少一个号码
特殊字符是可选的
最少六个字符,最多16个字符
Expression:
如果不需要最小和最大条件,则删除
.{6, 16}
6 是最小字符限制
20 是最大字符限制
?= 表示匹配表达式
你可以使用这个正则表达式:
此正则表达式将强制执行以下规则:
至少一个大写English letter,
(?=.*?[A-Z])
至少一封小写英文字母,
(?=.*?[a-z])
至少一位数,
(?=.*?[0-9])
至少有一个特殊字符,
(?=.*?[#?!@$%^&*-])
最小长度为
.{8,}
(带锚点)我在上一个答案中找到的解决方案如下:
至少8个字符至少1个大写字母,1个小写字母,1个数字和1个特殊字符:“^(?= . [az])(?= . [AZ])(?= . \ d)(?= . [ $ @ $!%?&])[A-ZA-Z \ d $ @ $!%?&] {8}”
...对我来说不起作用,但以下是简化版本并且效果很好(添加您喜欢的任何特殊字符,我在这里添加#),并添加数字规则,就像使用字母一样:
@ClasG已经suggested:
但它不接受_(下划线)作为特殊字符(例如Aa12345_) .
一个改进的是:
更多"generic"版本(?),不允许任何英文字母作为特殊字符 .
模式匹配至少1个大写字符,1个数字和任何特殊字符,长度在8到63之间 .
“^(?= [A-Z])(?= [A-Z])(?= . * \ d)[A-ZA-Z \ d \ W] {8.63} $”
该模式用于JAVA编程 .
正则表达式没有AND运算符,因此很难编写匹配有效密码的正则表达式,当有效性由某些东西和其他东西定义时,其他东西......
但是,正则表达式确实有一个OR运算符,所以只需应用DeMorgan的定理,并编写一个匹配无效密码的正则表达式:
任何少于八个字符 OR 任何没有数字的东西 OR 没有大写的任何东西 OR 或没有小写的任何东西 OR 没有特殊字符的东西 .
所以:
如果有任何匹配,那么它是一个无效的密码 .
对于我的情况,我遇到了最受欢迎的答案 . 例如,我的验证失败了
;
或[
等字符 . 我对列入我的特殊字符不感兴趣,所以我改为利用[^\w\s]
作为测试 - 简单地把 - 匹配非单词字符(包括数字)和非空白字符 . 总结一下,这对我有用...至少
8
个字符至少
1
数字字符至少
1
小写字母至少
1
大写字母至少
1
特殊字符JSFiddle Link - 涵盖各种案例的简单演示
希望以下工作 . 我在Azure自定义策略中尝试了这个 .
^(?= . [az])(?= . [AZ])(?= . \ d)(?= . [@#$%^&* -_ = [] {} | \:',?/
~"();!])([A-Za-z\d@#$%^&*\-_+=[\]{}|\\:',?/
~“();!] | . (?!@)){6,16} $试试这个:
这个正则表达式对我很有用 .
我会回复Peter Mortensen,但我没有足够的声誉 .
他的表达对于每个指定的最低要求都是完美的 . 他的表达式不需要特殊字符的问题是它们也不允许特殊字符,因此它们也强制执行最大要求,我不相信OP请求 . 通常,您希望允许用户根据自己的需要设置密码;为什么限制强密码?
所以,他的“最少八个字符,至少一个字母和一个数字”表达式:
^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d]{8,}$
达到最低要求,但其余字符只能是字母和数字 . 要允许(但不要求)特殊字符,您应该使用以下内容:
^(?=.*[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).{8,}$
允许任何字符要么
^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[A-Za-z\d$@$!%*?&]{8,}
允许特定的特殊字符 .没有直接回答这个问题,但它真的必须是正则表达式吗?
我曾经做过很多Perl,并习惯于解决正则表达式的问题 . 然而,当他们变得更复杂的所有前瞻和其他怪癖时,你需要编写几十个单元测试来杀死所有这些小错误 .
此外,正则表达式通常比命令式或功能性解决方案慢几倍 .
例如,以下(不是非常FP)Scala函数解决原始问题的速度比最流行答案的正则表达式快三倍 . 它的作用也很清楚,你根本不需要进行单元测试:
至少八个字符,至少一个字母和一个数字:
至少八个字符,至少一个字母,一个数字和一个特殊字符:
至少八个字符,至少一个大写字母,一个小写字母和一个数字:
至少八个字符,至少一个大写字母,一个小写字母,一个数字和一个特殊字符:
最少8个字符和最多10个字符,至少一个大写字母,一个小写字母,一个数字和一个特殊字符:
@ anubhava的回答只是一个小小的改进:由于特殊字符仅限于键盘中的特殊字符,因此可以将其用于任何特殊字符:
^(?=.*?[A-Z])(?=(.*[a-z]){1,})(?=(.*[\d]){1,})(?=(.*[\W]){1,})(?!.*\s).{8,}$
此正则表达式将强制执行以下规则:
至少一个大写英文字母
至少一封小写英文字母
至少一位数
至少有一个特殊字符
至少八个长度
您可以使用以下正则表达式模式来检查密码是否符合您的期望 .
我们可以使用HTML5来做到这一点 .
在模式属性中使用以下代码,
它会很完美 .
链接检查在线https://regex101.com/r/mqGurh/1
在Java / Android中,要使用以下模式测试至少包含一个数字,一个字母,一个特殊字符的密码:
根据您的需要,这种模式应该可以正常工作 . 试试这个,
只需创建一个字符串变量,分配模式,然后创建一个布尔方法,如果模式正确则返回true,否则返回false .
样品:
导入JavaScript文件
jquery.validate.min.js
.您可以使用此方法:
至少一个大写英文字母
至少一封小写英文字母
至少一位数
至少有一个特殊字符