行,所以我有心理障碍,当谈到正则表达式 - 但有人告诉我,拿出一个正则表达式,它满足以下条件:强密码的正则表达式
- 必须至少8个字符(简单! )
- 必须具有来自4个不同的字符类型的至少3个字符 - 大写,小写,数字,符号(OK)
- 必须具有至少5个不同的字符
- 不能具有的长序列相同的字符类型(例如asdnme会被认为是不好的,因为它是l的一个长序列奥尔情况下)
(?=^.{8,255}$)((?=.*\d)(?=.*[A-Z])(?=.*[a-z])|(?=.*\d)(?=.*[^A-Za-z0-9\s])(?=.*[a-z])|(?=.*[^A-Za-z0-9\s])(?=.*[A-Z])(?=.*[a-z])|(?=.*\d)(?=.*[A-Z])(?=.*[^A-Za-z0-9\s]))
这正则表达式满足1和2。但我在努力寻找实例3和4
如果任何正则表达式爱好者可以帮助我 - 我们将不胜感激。 :)
注:我不想使用正则表达式 - 这是我问任何人是否有可能使用正则表达式检查第3和第4种情况?请不要因为正则表达式是唯一的解决方案而信任我。我不相信 - 我们的achitect决定用最少的努力参与使用正则表达式来解决这个问题。
我个人认为这个级别的密码安全性会让系统无法使用!但也许我不在乎密码安全:)
注意:我们正在尝试使用Microsoft ASPNET成员 - 正则表达式。这就是为什么我认为它需要成为一个单一的表达。我知道,尝试阅读/理解是很可怕的。
如果任何人都可以提供单独的正则表达式的表达式 - 必须具有至少5个不同的字符 - 不能具有相同的字符类型的长序列(例如asdnme将被认为是不好的作为其下壳体的长序列) - 假设5个序列太长..
或者c#代码/ javascript?虽然这是特定的客户 - 我们不希望它空白应用于所有客户端。这可能是为什么架构师想要一个很好的正则表达式,您可以在部署时插入。 :(
发现别人的例子,在.NET工作
^(([AZ])(*()\ 1 {2}?!)|?([AZ])|( ?\ d)|((数字)([^ A-ZA-Z \ d])){8}((上)((下????)|((非字母数字)|?(?)) )|((数字?)((非字母数字)|?()?!)|))(?!)|((下)((数字?)((非字母数字)|?()?!)|(? !))|(?!)))$
不幸的是,满足这些条件:
必须有8个字符的最小长度
必须包含三个以下四个类型的字符:
英文大写字母(A - Z)
英文小写字母(a - z)
个数值数字(0 - 9)
非字母数字字符
没有字符可以成一排,例如重复3次或更多次BB(字母B两次)OK,但BBB(字母B三次)不正确。
但没有检测到至少5个不同的字符用于:(
没关系 - 下面的答案似乎工作唯一的事情是,它似乎允许4个不同的字符,而不是要求。 ?5
我已经调整了它是: ^((= {8,}?):???(= \ d)(= [AZ])(= [ (φ=。 \ d)(?=。[^ A-Za-z0-9 \ s])(?=。 [az])| 10 [^ A-Za-z0-9 \ s])(?=。 (?=。[AZ])(?=。 [^ A-Za-z0-9 \ s])(?=。[az])|(?=。 \ d) )(?=(。)(?>。?(?!\ 1})(。))(?>。?(?!\ 1} | \ 2)(。))(?>。? (?!\ 1 | \ 2 | \ 3)(。))(?>。?(?!\ 1 | \ 2 | \ 3 | \ 4)(。))(?>。?(?! (?!。?\ d {4})(?!。?[az] {4})(?!。?[1 | \ 2 | \ 3 | \ 4 | \ 5)。) AZ] {4})(?!。*?[^ A-Za-z0-9 \ s] {4})
希望我们再也不要碰它了)再次我会推代码选项,我认为:)
编辑:发现字符串不太正确。它不会传递“!tt23yyy”而不必添加其他数字或特殊字符。所以有正则表达式的想法,并与代码选项。这实在太难调试正则表达式的问题,如果你不理解正则表达式:)(可以理解的)
你想要将太多的东西塞进一个正则表达式中......如果你设法让所有东西都进入,那么这对任何人来说都是难以逾越的。是否有一个特定的要求,你*必须*只使用*一个*正则表达式? – rid
它必须在一个通行证?如果您一次完成这项任务,您无法为用户提供很多反馈意见。 –
为什么使用正则表达式呢?特别是单一的?你不能告诉用户用户破坏了你的一个奇怪的要求吗? –