密码强度JS总结的两种正则表达式方案
本文给出了两个具有密码强度的正则表达式方案,一个简单,另一个复杂且安全。分别给出了两种方案的分析和测试程序。一般每个人都可以根据自己项目的实际需要定义自己的密码常规。
前言
当用户注册时,他们总是使用密码定期检查。要编写正确的正则表达式,必须首先定义表达式规则。
选项1(简单)
假设密码验证定义如下:
最短的6位和最长的16位{6,16}可以包含小写字母[a-z]和大写字母[A-Z]、数字[0-9]、下划线[_]和减号[-]。根据以上规则,很容易给出正则字面的定义如下:
var模式=/^[\w_-]{6,16}$/;方案1分析
文字量/
正则表达式的文字值被定义为包含在一对斜杠(/)之间的字符,例如:
var pattern=/s $/;上面的文字量匹配所有以字母“s”结尾的字符串。
字符类[]
字符类是通过将字符放在方括号中形成的。字符类可以匹配它包含的任何字符。因此,正则表达式/[abc]/匹配任何字母“a”、“b”和“c”。
字符类可以使用连字符来表示字符范围。要匹配拉丁小写字母,可以使用/[a-z]/。
字符类\w
字符类\w匹配任何由ASCII字符组成的单词,相当于[a-zA-Z0-9]。
[\w_-]表示匹配任何拉丁文大写和小写字母、数字加下划线和减号。
重复{}
在正则表达式中使用{}来指示元素重复出现的次数。
{n,m}与前一项匹配至少n次,但不超过m次{n,}与前一项匹配n次或更多{n}与前一项匹配n次[\w_-]{6,16}表示匹配任何拉丁文大写和小写字母,数字加下划线和减号出现至少6次,最多16次。
匹配位置
匹配字符串的开头。在多行检索中,匹配行的开头$匹配字符串的结尾。在多行检索中,匹配行尾/\ w/匹配以大小写字母或数字开头的字符串。
场景1测试
测试结果如下:
var模式=/^[\w_-]{6,16}$/;pattern . test(' 123456 ')=true;pattern . test('-ifat 33 ')=true;pattern . test(' 42du ')=false;pattern . test(' du 42 du 42 du 42 du 421 ')=false;pattern . test('[email protected]')=false;查看源代码
从测试结果可以看出,方案1只是对密码进行了限制,并不能保证密码强度和账户安全性。
选项2(安全)
假设密码验证定义如下:
最短的6位数和最长的16位数{6,16}必须包含1个数字;2个小写字母;2个大写字母和1个特殊字符。根据上述规则;给正则文字下如下定义很容易:
var模式=/^.*(?=.{6,16})(?=.*\d)(?=.*[A-Z]{2,})(?=.*[a-z]{2,})(?=.*[[emailprotected]#$%^*?\(\)]).*$/;方案2分析
人物类。
人物类。表示除换行符和其他Unicode行结束符之外的任何字符。
肯定的第一个断言(?=)
在符号“(?在“=”和“)”之间添加一个表达式,这是一个先行断言,表明括号中的表达式必须正确匹配。示例:/Java(?=\ 3360)/只能将Java与冒号匹配。
(?=.*[[emailprotected]#$%^*?\(\)])
先行断言表示必须包含一个特殊字符。上面表达式中的10个特殊字符是键盘1,2的上键字符.0,也可以添加其他特殊字符。注意:如果在正则表达式中添加具有特殊含义的字符,则需要在符号前添加反斜杠(\)以进行转义。
方案2测试
测试结果如下:
var模式=/^.*(?=.{6,16})(?=.*\d)(?=.*[A-Z]{2,})(?=.*[a-z]{2,})(?=.*[[emailprotected]#$%^*?\(\)]).*$/;pattern.test('du42DU!')=truepattern.test('duDUd!')=falsepattern.test('42dud!')=falsepattern.test('42DUD!')=falsepattern . test(' 42 DuDu ')=false;pattern . test(' 42 duu(')=false;pattern.test('42dUU!')=false摘要
以上是边肖介绍的两种密码强度正则表达式方案的JS总结,希望对大家有所帮助。如果你有任何问题,请给我留言,边肖会及时回复你。非常感谢您对我们网站的支持!
版权声明:密码强度JS总结的两种正则表达式方案是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。