这些是要求,但我想这对我的正则表达式技能来说太复杂了......
. 6 到 10 个字母数字字符之间
。允许 AZ,az,0-9,@,$,_
。必须以字母开头
。必须至少包含一个数字
。不能包含两个连续的相同字符
。不能包含两个连续相同的数字
我知道正则表达式的基本知识,例如 [A-Za-Z] = characters only 等......但是当涉及到连续字符和东西时......
尝试这个
((?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[\W]).{6,20})
上述正则表达式说明:
( # Start of group
(?=.*\d) # must contains one digit from 0-9
(?=.*[a-z]) # must contains one lowercase characters
(?=.*[A-Z]) # must contains one uppercase characters
(?=.*[\W]) # must contains at least one special character
. # match anything with previous condition checking
{6,20} # length at least 6 characters and maximum of 20
) # End of group
“/W”会增加可用于密码的字符范围,坑可以更安全。
如果您想验证密码,您可以使用组来验证密码;
(?<a>[a-zA-Z])?(?<b>[0-9])?(?<c>[@%$#/\\\(\)])?
将为您提供 3 个组中的任何一个(a、b 和 c)的匹配项
大写字符和小写字符将在 a 组中
数字字符将在 b 组中
特殊字符将在 c 组中
您可以使用 regex.match.groups("a").count 来查看是否可以找到来自组 a 的任何字符
如果您在所有 3 个组中都找到字符,则密码是强密码。
string pattern1 = @"^[a-zA-Z]([a-zA-Z])*"; //start and any number of characters
string pattern2 = @"[0-9]+"; //one number or more numbers
string pattern3 = @"[@#$%]*"; // special symbol allowed
string pattern4 = @"(.)\1";//consecutive characters
string pattern5 = @"^(.){6,10}$"; //min max