以下是符合以下密码标准的正确“正则表达式”:
至少包含1个小写字母。 必须包含至少1个大写字母。 必须包含至少1个数字。 必须包含至少1个特殊字符(只允许使用以下特殊字符:! #%)。 不能包括除A-Za-z0-9!#%之外的任何其他字符(例如,不能包括;)。 长度必须在8到32个字符之间。
这是我尝试过的,但不起作用:
但应该是:
我得到了以下的正则表达式:
至少包含1个小写字母。 必须包含至少1个大写字母。 必须包含至少1个数字。 必须包含至少1个特殊字符(只允许使用以下特殊字符:! #%)。 不能包括除A-Za-z0-9!#%之外的任何其他字符(例如,不能包括;)。 长度必须在8到32个字符之间。
这是我尝试过的,但不起作用:
^(?=.*?[a-z])(?=.*?[A-Z])(?=.*?[0-9])(?=.*?[\!\#\@\$\%\&\/\(\)\=\?\*\-\+\-\_\.\:\;\,\]\[\{\}\^]).{8,32}
但应该是:
但它应该是:
^(?=.*?[a-z])(?=.*?[A-Z])(?=.*?[0-9])(?=.*?[\!\#\@\$\%\&\/\(\)\=\?\*\-\+\-\_\.\:\;\,\]\[\{\}\^])[A-Za-z0-9!#%]{8,32}
但是无论如何,Unihedron的解决方案更好,只是想为将来阅读这个问题的用户提供一些信息。 :)
Unihedron的解决方案(也可以在他下面的答案中找到,我复制了它给自己,以防他在答案中进行更新并提供更好的版本):
^(?=[^a-z]*[a-z])(?=[^A-Z]*[A-Z])(?=\D*\d)(?=.*?[!#%])[A-Za-z0-9!#%]{8,32}$
我得到了以下的正则表达式:
regex
^(?=[^a-z]*[a-z])(?=[^A-Z]*[A-Z])(?=\D*\d)(?=.*?[\!\#\@\$\%\&\/\(\)\=\?\*\-\+\-\_\.\:\;\,\]\[\{\}\^])[A-Za-z0-9\!\#\@\$\%\&\/\(\)\=\?\*\-\+\-\_\.\:\;\,\]\[\{\}\^]{8,60}$
再次感谢Unihedron和skamazin。非常感谢!
regex
方法。如果我有对“疯狂性能”的需求或者如果情况极其紧急,那么我会欣赏 Steve 的方法(这就是为什么我也点赞了 Steve 的想法)。很高兴知道您有多种选择。再次感谢! :) - Jo Smo