包含至少一个大写,一个小写,一个特殊字符,一个数字和一个空格的字符串

时间:2013-12-14 10:52:41

标签: regex perl

我想要一个脚本来选择用户名。选择用户名的规则是:

  • 用户名的最小长度必须为5个字符,最大长度可以为10.
  • 至少应包含A-Z
  • 中的一个字母
  • 它应包含至少一个0-9
  • 的数字
  • 它应至少包含@#* =
  • 中的一个字符
  • 不应包含任何空格。

我试过这个:

if (( length $passwd[$i]<=10 && length $passwd[$i]>=5 && $passwd[$i] =~ /.*\p{Lu}/ && $passwd[$i] =~ tr/0-9//cd  && $passwd[$i] =~ /[a-z]/ ))
{   
    print "PASS\n";
}
else
{
    print "FAIL\n";
}

1 个答案:

答案 0 :(得分:3)

作为一个perl正则表达式,可能是:

if ($username =~ qr{^(?=.*[A-Z])(?=.*\d)(?=.*[@#*=])(?!.* ).{5,10}$}s) ...

或者:

if ($username =~ qr{^(?=.*[A-Z])(?=.*\d)(?=.*[@#*=])[^ ]{5,10}$}s)