我试图找出一个正则表达式模式,将执行以下操作:正则表达式,用于验证passwith允许特定的特殊字符
- 在任何位置
- 至少需要1个小至少需要1个大写字母性格在任何位置
- 至少需要1位中的任何位置
- 允许在任何位置(但不要求)的特殊字符!$ &
任何帮助,将不胜感激
例子,应该工作:
- PASSW0RD
- Passw0rd1
- 传递w20rd
例子,不应该工作:
-
!
- PASSW @ ord24
- 密码
- PASSW @ RD24
- 密码
我试图找出一个正则表达式模式,将执行以下操作:正则表达式,用于验证passwith允许特定的特殊字符
任何帮助,将不胜感激
例子,应该工作:
例子,不应该工作:
这一个应该工作:
^(?=[a-zA-Z0-9!$&]*\d)(?=[a-zA-Z0-9!&$]*[a-z])(?=[a-zA-Z0-9!&$]*[A-Z])[a-zA-Z0-9!&$]+$
您还可以更改+
到范围{4,}
或{4,50}
防止太小密码和/或过大的密码。
林接受这个答案,因为它似乎正是我想要的。感谢每个人的反馈。 – RustedBucket 2014-11-08 18:30:29
最简单的办法是像(有点幼稚,但应该工作,也许有更有效的方法):
([a-zA-Z0-9!$&]*[a-z]+[a-zA-Z0-9!$&]*[A-Z]+[a-zA-Z0-9!$&]*[0-9]+[a-zA-Z0-9!$&]*)|
([a-zA-Z0-9!$&]*[A-Z]+[a-zA-Z0-9!$&]*[a-z]+[a-zA-Z0-9!$&]*[0-9]+[a-zA-Z0-9!$&]*)|
([a-zA-Z0-9!$&]*[0-9]+[a-zA-Z0-9!$&]*[A-Z]+[a-zA-Z0-9!$&]*[a-z]+[a-zA-Z0-9!$&]*)|
([a-zA-Z0-9!$&]*[A-Z]+[a-zA-Z0-9!$&]*[0-0]+[a-zA-Z0-9!$&]*[a-z]+[a-zA-Z0-9!$&]*)|
([a-zA-Z0-9!$&]*[0-9]+[a-zA-Z0-9!$&]*[a-z]+[a-zA-Z0-9!$&]*[A-Z]+[a-zA-Z0-9!$&]*)|
([a-zA-Z0-9!$&]*[a-z]+[a-zA-Z0-9!$&]*[0-9]+[a-zA-Z0-9!$&]*[A-Z]+[a-zA-Z0-9!$&]*)
当然,它必须根据您使用的语言调整为语言语法正则表达式。 在Java:
String regex = "([a-zA-Z0-9!$&]*[a-z]+[a-zA-Z0-9!$&]*[A-Z]+[a-zA-Z0-9!$&]*[0-9]+[a-zA-Z0-9!$&]*)|"
+ "([a-zA-Z0-9!$&]*[A-Z]+[a-zA-Z0-9!$&]*[a-z]+[a-zA-Z0-9!$&]*[0-9]+[a-zA-Z0-9!$&]*)|"
+ "([a-zA-Z0-9!$&]*[0-9]+[a-zA-Z0-9!$&]*[A-Z]+[a-zA-Z0-9!$&]*[a-z]+[a-zA-Z0-9!$&]*)|"
+ "([a-zA-Z0-9!$&]*[A-Z]+[a-zA-Z0-9!$&]*[0-0]+[a-zA-Z0-9!$&]*[a-z]+[a-zA-Z0-9!$&]*)|"
+ "([a-zA-Z0-9!$&]*[0-9]+[a-zA-Z0-9!$&]*[a-z]+[a-zA-Z0-9!$&]*[A-Z]+[a-zA-Z0-9!$&]*)|"
+ "([a-zA-Z0-9!$&]*[a-z]+[a-zA-Z0-9!$&]*[0-9]+[a-zA-Z0-9!$&]*[A-Z]+[a-zA-Z0-9!$&]*)";
String[] passList = new String[] { "Passw0rd", "!Passw0rd1", "Pass!w20rd", "[email protected]", "password",
"[email protected]", "Password" };
for (String pass : passList)
{
System.out.print(pass + ": " + pass.matches(regex)+", ");
}
输出:
Passw0rd: true, !Passw0rd1: true, Pass!w20rd: true, [email protected]: false, password: false, [email protected]: false, Password: false
如果多于一个表达式是allowey,可以使用像(在perl
语法):
if ($pw =~ /[^a-zA-Z0-9!\$&]/) {
print "Usage of not allow characters.\n";
} else {
if ($pw =~ /[a-z]/ && $pw =~ /[A-Z]/ && $pw =~ /\d/) {
print "okay\n";
} else {
print "not okay\n";
}
}
工程与上述所有的实施例。
下划线还允许吗? – Nemesis 2014-11-08 14:53:28
嘿同胞triangler - 如果你能给出一个可以工作的密码和一个会失败的密码的例子,那会很好。还有你正在使用的任何特定语言? – Anthony 2014-11-08 14:59:22
其实它是一个动态字段,允许特殊字符可以预定义,所以可以。我更多地寻找写出模式的正确方法。我其实已经拿到了第一个,所需的领域,这些都相当简单。我很难让所允许的角色在不需要他们的情况下工作。 – RustedBucket 2014-11-08 15:00:32