正则表达式验证强密码

时间:2015-03-20 10:00:50

标签: regex validation

我正在搜索正则表达式以获取我的密码。 我需要: 第一个字符:字母(上部o下部) 字母:最小1低,1高 不罕见的人物 Minimun 8个字符,最多30个

我有:

^[a-zA-Z](?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?!.*\W).{8,30}$

但我有一个问题......

我需要写一个比第一个更低或更高的。 有什么想法吗?

感谢!!!

2 个答案:

答案 0 :(得分:1)

你的正则表达式对我来说似乎很好,但你可以简化一下:

^[a-zA-Z](?=.*\d)(?=.*[a-z])(?=.*[A-Z])[a-zA-Z0-9]{7,29}$
        The first character is not counted here __^^^^^^

答案 1 :(得分:0)

不要将其作为单个正则表达式执行。没有必要在一个正则表达式中执行它,如果你只使用多个if语句,它将更容易更改规则,并且更容易阅读。

例如,如果您在Perl中执行此操作,则只需执行

my $ok =
    (length($pw) >= 8) &&
    (length($pw) <= 30) &&
    ($pw =~ /[a-z]/) &&  # Has at least one lowercase char
    ($pw =~ /[A-Z]/) &&  # Has at least one uppercase char
    ($pw =~ /^[A-Za-z]); # First character is a letter, either upper or lower.
 ;

(我没有解决“不罕见的角色”,因为我不确定这意味着什么。)

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