我需要以下检查才能进行强密码验证:
我发现并调整了一个RegEx,就像这样(抱歉,我丢失了参考资料......):
^.*(?=.{7,})(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[@'#.$;%^&+=!""()*,-/:<>?]).*$
它在C#
中工作,除了我需要匹配任何特殊字符的事实,我的意思是 ANY 。换句话说,我需要“特殊字符”是但数字和低/大写字母。
为了清楚起见,让我们考虑重音符是特殊字符,因此é
,ñ
等在此问题的上下文中应被视为特殊字符
答案 0 :(得分:8)
^.*(?=.{7,})(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[^a-zA-Z0-9]).*$
答案 1 :(得分:5)
(不是C#代码)
def validate (value):
return (value.Length >= 7 &&
value.IndexOfAny(['0', ..., '9']) >= 0 &&
value.IndexOfAny(['A', ..., 'Z']) >= 0 &&
value.IndexOfAny(['@', ..., ')']));
是的我知道这不是问题所在,但我相信它比任何RegExp解决方案更清晰,性能更高,维护更容易。
答案 2 :(得分:4)
我相信: -
\ W
匹配任何单词字符。
反过来是: -
\ W
这就是你想要的。
修改强>
^.*(?=.{7,})(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[\W_]).*$
在以下位置测试您的正则表达式: -
答案 3 :(得分:1)
在这里查看:Unicode Regular Expressions并选择一个Unicode类,例如\p{Symbol}
或\p{Punctuation}
答案 4 :(得分:0)
试试这个:
^(?=.{7,})(?=.*?\d)(?=.*?[a-z])(?=.*?[A-Z])(?=.*?[@'#.$;%^&+=!"()*,-/:<>?])
答案 5 :(得分:0)
Regex Rx = null;
Rx = new System.Text.RegularExpressions.Regex("^(?=.*?[A-Za-z])(?=.*?[0-9])(?=.*?[#?!@$%^&*-]).{7,}$");
if (Rx.IsMatch(textBox3.Text))
{
textBox3.BackColor = Color.Green;
textBox3.ForeColor = Color.White;
MessageBox.Show("Password is (correct) format ");
}
else
{
textBox3.BackColor = Color.DarkRed;
textBox3.ForeColor = Color.White;
MessageBox.Show("Contact is (in-correct) format");
}