我需要以下检查以进行强密码验证:
我找到并调整了一个RegEx,就像这样(对不起,我丢失了参考资料......):
^.*(?=.{7,})(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[@'#.$;%^&+=!""()*,-/:<>?]).*$
Run Code Online (Sandbox Code Playgroud)
它的工作C#原理除了我需要匹配任何特殊字符,我的意思是任何东西.换句话说,我需要一个"特殊字符"是什么,但数量和更低/大写字母.
为了清楚起见,让我们考虑重音是特殊字符,因此é,ñ在这个问题的上下文中应该将其视为特殊字符.
^.*(?=.{7,})(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[^a-zA-Z0-9]).*$
Run Code Online (Sandbox Code Playgroud)
(不是C#代码)
def validate (value):
return (value.Length >= 7 &&
value.IndexOfAny(['0', ..., '9']) >= 0 &&
value.IndexOfAny(['A', ..., 'Z']) >= 0 &&
value.IndexOfAny(['@', ..., ')']));
Run Code Online (Sandbox Code Playgroud)
是的我知道这不是问题所在,但我相信它比任何RegExp解决方案更清晰,性能更高,维护更容易.