求一个前端密码的校验规则

新手上路,请多包涵

系统配置的密码复杂度包含四个选项 大写字母, 小写字母, 数字, 特殊字符 ,密码规则必须包含这四项中的至少三项 且密码长度在6-18个字符长度
然后在设置用户密码的时候要根据配置的密码规则进行校验 如果配置的密码规则是['大写字母', '小写字母', '数字']这三项 而密码输入框输入的密码只含['大写字母', '小写字母', '特殊字符']则不予通过, 像这种密码必须要与已设置的密码规则匹配且密码规则也是可配置的,应该怎么进行校验呢?

阅读 6.1k
1 个回答

来源:https://www.jianshu.com/p/259...

我就直接复制粘贴了。

如果不会正则表达式的话建议就直接用代码判断好了,不会很难,罗嗦一些。

最好是能稍微学一学正则,很有用。下面的答案我在浏览器里拿js测了几个是ok的。


方案一
至少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)(?=.*[$@$!%*#?&])[A-Za-z\d$@$!%*#?&]{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)(?=.*[$@$!%*?&])[A-Za-z\d$@$!%*?&]{8,}

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

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

作者:查果果
链接:https://www.jianshu.com/p/259...
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题