【发布时间】:2011-08-18 17:13:33
【问题描述】:
我正在编写一个密码验证正则表达式,我已经成功完成了 80-90% 的工作,但无法合并我需要的最后两部分,我厌倦了用头撞墙所以这就是你们进来的地方;)
到目前为止,这是我的表达:
^(?!.*(.)\1{3}).*(?=.{8,})(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[\Q~!@#$%^&*()-_=+[]{}|;:,.<>/?\E]).*$
所以我有以下规则:
-
(?!.*(.)\1{3})- 序列中相同字符不超过 3 个 -
.*(?=.{8,})- 字符串必须至少为 8 个字符 -
(?=.*\d)- 必须至少包含一位数字 -
(?=.*[a-z])- 必须至少包含一个小写字母 -
(?=.*[A-Z])- 必须至少包含一个大写字母 -
(?=.\*[\Q~!@#$%^&*()-_=+[]{}|;:,.<>/?\E])- 必须至少包含这些特殊字符之一
我需要再添加两个限制
1) 字符串中不得出现除字母数字或我的特殊字符之一以外的字符。所以我认为我的基本表达是正确的:
^([\w\Q~!@#$%^&*()-_=+[]{}|;:,.<>/?\E]*)$
但是当我尝试将它添加到我的整体表达中时它不起作用或者它搞砸了我的其他条件之一,所以我不确定我做错了什么
2) 字符串必须包含 4 个唯一字符。我根本想不通。
提前感谢您提供的任何帮助
【问题讨论】:
-
您应该对每个要求使用单独的检查。那个正则表达式是一个不容易维护的怪物。
标签: regex validation