Skip to main content
 首页 » 编程设计

c#之以下约束的正则表达式是什么

2024年01月13日31cmt

我想要一个密码字符串的正则表达式,该字符串至少包含以下四种字符中的三种:

  • 英文小写字符(a 到 z)。
  • 英文大写字符(A 到 Z)。
  • 10 位数字(0 到 9)。
  • 非字母数字字符(例如 !、$、#、%)。

并且至少应包含 8 个字符。

请您参考如下方法:

考虑到这些要求可能会产生的怪异a,我怀疑您实际上最好将其作为多个检查来执行,例如(伪-代码):

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 

当其他人必须维护您的代码时(或者即使 您 必须在六个月后维护它),这可能更具可读性。

现在我意识到这可能并不总是可行的(例如,您可能会受困于只允许一个正则表达式进行验证的框架)。

但是,如果可能的话,我强烈建议您考虑一下。您应该始终尝试优化的第一是可读性。


a 您要么得到那些大量的前瞻性正则表达式之一,要么得到一个包含由 | 分隔的 16 种排序可能性的正则表达式。

这些都不可能像简单的代码段那样高效或可读。