正则表达式检查给定的密码是否在c#中包含至少一个数字和一个字母?

时间:2009-08-22 19:03:31

标签: c# .net regex

有人可以帮我写一个正则表达式来检查密码中是否至少有一个字母和一个数字吗?

我要求用户密码必须是字母数字,我希望能够使用正则表达式检查。

3 个答案:

答案 0 :(得分:21)

积极前瞻是您正在寻找的。正则表达式看起来像这样:

(?=.*[A-Za-z])(?=.*[0-9])[A-Za-z0-9]+

在这里,(?=.*[A-Za-z])是正向前瞻,它断言你的字符串为至少一个字符,而(?=.*[0-9])断言它有至少一个数字< / strong>即可。重要的是要注意,正向前瞻不会返回匹配,而是断言是否存在匹配。所以,你应该阅读前面的正则表达式“断言它至少有一个字符;断言它至少有一个数字;现在我们知道断言已经通过,只需检查字母数字字符”。

这非常有趣,因为它允许您轻松组合应用程序的验证要求,而不会使正则表达式变得非常复杂。例如,如果您现在要求字符串具有完全 20个字符,则只需添加一个新的正向前瞻断言,如下所示:

(?=[A-Za-z0-9]{20})(?=.*[A-Za-z])(?=.*[0-9])[A-Za-z0-9]+

希望它有所帮助!

答案 1 :(得分:7)

如果你想在一个正则表达式中使用它,你可以使用"[a-zA-Z].*\\d|\\d.*[a-zA-Z]"虽然两个单独的检查可能更具可读性。

编辑:一个有两个检查的方法,我觉得它很可读,可能看起来像这样:

Regex.IsMatch(password, "\\d") && Regex.IsMatch(password, "[a-zA-Z]")

答案 2 :(得分:2)

bool isValid = Regex.IsMatch(password, @"[a-zA-Z]") &&
               Regex.IsMatch(password, @"\d");