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
以后需要维护代码时,阅读起来会容易得多。
以下是 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
以后需要维护代码时,阅读起来会容易得多。