C#正则表达至少一个字母和至少一个数字

时间:2013-05-02 21:23:57

标签: c# regex

我正在尝试检查密码是否至少包含一个字母和数字。 以下似乎没有用。

密码可以是“tester1”或“11111111t”等。

不能是所有字母或所有数字。

有什么想法吗?

const string pattern = @"/[a-z].*\d|\d.*[a-z]/";
var match = Regex.Match(password, pattern);

解决:

var rule1 = password.Any(char.IsLetter);
var rule2 = password.Any(char.IsNumber);

这也很有效:

const string pattern = @"[a-z].*\d|\d.*[a-z]";

5 个答案:

答案 0 :(得分:5)

我会使用更容易维护的简单规则,而不是使用正则表达式。例如:

var rule1 = str.All(char.IsLetter);
var rule2 = str.All(char.IsNumber);

您可以通过char.IsLowerchar.IsUpper等来丰富您的规则。

答案 1 :(得分:3)

这样做......

^(?=.*[a-zA-Z])(?=.*[0-9]).+$

我正在使用positive lookaheads (?=)来完成此任务,然后允许任何字符.一次或多次。这样,用户可以输入特殊字符,标点符号等。

答案 2 :(得分:2)

这是一个

((.*\d.*[a-zA-Z].*)|(.*[a-zA-Z].*\d.*))

答案 3 :(得分:1)

模式周围的斜杠用于具有正则表达式文字的语言。 C#没有那个。

从图案中删除斜杠:

const string pattern = @"[a-z].*\d|\d.*[a-z]";

答案 4 :(得分:0)

至少一个大写,一个小写,一个数字,一个特殊字符和至少8个字符的正则表达式:

^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[^a-zA-Z0-9 :])(?=.{8,})