正则表达式:密码必须⾄少包含⼋个字符、⾄少包含⼀个数字、
⼩写和⼤写的字母以及特殊字符
密码的正则表达式如何来写?
我需要⼀个正则表达式来检查密码:
密码⾄少包含⼋个字符、⾄少包含⼀个数字、同时包含⼩写字母和⼤写字母以及特殊字符,例如#,?,!)
不能是旧密码或包含⽤户名,"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,}$
这个正则表达式将强制执⾏这些规则:
⾄少⼀个⼤写字母,(?=.*?[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,}$/
- 简单的涵盖各种情况的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)
});
这个正则表达式可以表达:
1. ⾄少⼀张⼤写英⽂字母
2. ⾄少⼀个⼩写英⽂字母
3. ⾄少⼀位数字
4. ⾄少⼀个特殊字符
第七种思路
满⾜如下条件:
1. 最少六个字符
2. ⾄少有⼀个⼤写字符
3. ⾄少⼀个⼩写字符
4. ⾄少⼀个特殊字符
正则表达式:
"/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[$@$!%*?&.])[A-Za-z\d$@$!%*?&.]{6, 20}/"
满⾜如下条件,且有可选特殊字符:
1. ⾄少⼀个特殊字符
2. ⾄少⼀个数字
3. 特殊字符是可选的
4. 最少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 = st(str);
console.log("Is regular matches:", res);
}

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。