我正在搜索正则表达式以获取我的密码。 我需要: 第一个字符:字母(上部o下部) 字母:最小1低,1高 不罕见的人物 Minimun 8个字符,最多30个
我有:
^[a-zA-Z](?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?!.*\W).{8,30}$
但我有一个问题......
我需要写一个比第一个更低或更高的。 有什么想法吗?
感谢!!!
答案 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.
;
(我没有解决“不罕见的角色”,因为我不确定这意味着什么。)
稍后当您必须维护代码时,这将更容易阅读。