Gir*_*ari 1 .net c# regex validation
我想要一个密码字符串的正则表达式,其中包含以下四种字符中的至少三种:
并且应该包含至少8个字符.
pax*_*blo 10
鉴于怪物一个,这些要求可能产生,我怀疑你实际上是将是更好做这个作为多重检查,像(伪代码):
def check_password (s):
if len(s) < 8:
return false
rules_followed = 0
if match (s, "[a-z]") rules_followed++;
if match (s, "[A-Z]") rules_followed++;
if match (s, "[0-9]") rules_followed++;
if match (s, "[!$#%]") rules_followed++; # et cetera
if rules_followed < 3:
return false
return true
Run Code Online (Sandbox Code Playgroud)
当其他人必须维护您的代码时(或者即使您必须在六个月后维护它),这可能更具可读性.
现在我意识到这可能并不总是可能的(例如,您可能会遇到只允许一个正则表达式进行验证的框架).
但是,如果有可能,我强烈建议你考虑一下.您应该始终尝试优化的第一件事是可读性.
a你要么最终得到其中一个巨大的前瞻性正则表达式,要么是一个包含16个可能性排序的正则表达式|.
这些都不像简单的代码段那样高效或可读.