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

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

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

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

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

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

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

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

希望能帮助到你!

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

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

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