PCI 合规性密码要求的正则表达式

Regular expression for Password Requirements for PCI Compliance

以下是 PCI 合规性的密码要求:

请告诉我如何创建这样的正则表达式?我不知道该怎么做

^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[#\!\?\^@])$

特殊字符单独指定

^.*\d.*[a-z].*[A-Z].*[#\!\?\^@].*$

简单地说,这应该为您完成。

不要将其作为单个正则表达式来执行。无需在单个正则表达式中执行此操作,如果您只进行多个正则表达式检查,更改规则会更容易,并且更易于阅读。

例如,如果您在 Perl 中执行此操作,您就可以这样做

my $ok =
    ($pw =~ /[a-z]/) &&  # Has at least one lowercase char
    ($pw =~ /[A-Z]/) &&  # Has at least one uppercase char
    ($pw =~ /\d/)    &&  # Has at least one digit
    ($pw =~ /[#!?^@]);   # Has punctuation

以后需要维护代码时,阅读起来会容易得多。