2

我正在尝试检查密码是否至少包含一个字母和数字。

以下似乎不起作用。

密码可以是“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]";
4

5 回答 5

8

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

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

你可以通过等来丰富你的char.IsLower规则char.IsUpper

于 2013-05-02T21:34:09.737 回答
3

这会做到...

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

我正在使用积极的前瞻 (?=)来实现这一点,然后允许任何角色.一次或多次。这样用户就可以输入特殊字符、标点符号等。

于 2013-05-02T21:29:08.140 回答
2

这是一个

((.*\d.*[a-zA-Z].*)|(.*[a-zA-Z].*\d.*))
于 2013-05-02T21:27:27.410 回答
2

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

从模式中删除斜线:

const string pattern = @"[a-z].*\d|\d.*[a-z]";
于 2013-05-02T21:27:37.990 回答
0

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

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

于 2019-10-15T08:09:05.217 回答