想确认,并与社区分享我的想法..定期为Active Directory密码表达
的Active Directory密码的正则表达式应验证密码
- 的长度 至少六个字符
- 包含英文大写字母(A到Z)
- 包含英文小写字母(a到z)
- 包含Base 10 digi TS(0-9)
- 包含非字母字符(!,$,#%......)
- 不包含超过两个连续字符的用户的帐户名或用户的全名的部分
前5个条件很简单。
我发现,这应该为1-5的条件做的工作:
(?=^.{8,255}$)((?=.*\d)(?=.*[A-Z])(?=.*[a-z])|(?=.*\d)(?=.*[^A-Za-z0-9])(?=.*[a-z])|(?=.*[^A-Za-z0-9])(?=.*[A-Z])(?=.*[a-z])|(?=.*\d)(?=.*[A-Z])(?=.*[^A-Za-z0-9]))^.*
但我怎么添加条件6 —名称的否定和登录?
我看到它在这样:
首先得到什么是被禁止:
String enter = fullname + login;
List<string> Negative = new List<string>();
for (int i = 0; i < enter.Length; i += 3)
{
if (i + 3 > enter.Length)
{
enter.Substring(i, 3);
Negative.Add(enter.Substring(i, 3));
}
}
然后建立正则表达式:
StringBuilder pattern = new StringBuilder("(?=^.{8,255}$)((?=.*\d)(?=.*[A-Z])(?=.*[a-z])|(?=.*\d)(?=.*[^A-Za-z0-9])(?=.*[a-z])|(?=.*[^A-Za-z0-9])(?=.*[A-Z])(?=.*[a-z])|(?=.*\d)(?=.*[A-Z])(?=.*[^A-Za-z0-9]))");
foreach(string word in Negative)
{
pattern.Append("(/^((?!" + word + @")[\s\S])*$/)");
}
pattern.Append("^.*");
的模式应该是必需的正则表达式了。
我主要关注的是这行代码:
pattern.Append("(/^((?!" + word + @")[\s\S])*$/)");
将其添加消极条件word
?
你有'{8,255}',你的第一个要求是'至少有六个字符的长度.....'非字母字符'和'字母数字字符'变成'.'..所以为什么要用这个**巨大的**正则表达式.. – Anirudha
Anirudh,yep我同意你能否提供你的代码版本? –
我已经提供了代码 – Anirudha