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

时间:2015-04-14 16:34:30

标签: regex passwords

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

  • 必须至少包含一个大写字母
  • 必须至少包含一个小写字母
  • 必须至少包含一个数字
  • 必须至少包含一个特殊字符,例如#,!,?,^或@。

请告诉我如何创建这样的规则表达式?我无法弄明白该怎么做

3 个答案:

答案 0 :(得分:2)

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

例如,如果您在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

稍后当您必须维护代码时,这将更容易阅读。

答案 1 :(得分:0)

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

特殊字符是单独指定的

答案 2 :(得分:0)

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

这应该是为你做的。