Asp.net asp net密码正则表达式有问题吗?

Asp.net asp net密码正则表达式有问题吗?,asp.net,regex,Asp.net,Regex,我试图在密码字段中验证以下内容: -至少1个α -至少1个数字 -至少1个特殊(非字母数字) 我的注册经验是: Regex.IsMatch("jpere33z@1?hs", @"^\w*(?=\w*\d)(?=\w*[a-z])(?=\W*)\w*$") 它说这是无效的。\W部分不起作用 你能告诉我为什么吗?你的正则表达式不允许超过1位数 最简单的方法可能是进行3次正则表达式检查,每种字符类型一次检查存在性。\w*$只匹配字母、数字和下划线。这就是你想要的: Regex.IsMatch("

我试图在密码字段中验证以下内容:
-至少1个α
-至少1个数字
-至少1个特殊(非字母数字)

我的注册经验是:

Regex.IsMatch("jpere33z@1?hs", @"^\w*(?=\w*\d)(?=\w*[a-z])(?=\W*)\w*$")  
它说这是无效的。
\W
部分不起作用


你能告诉我为什么吗?

你的正则表达式不允许超过1位数


最简单的方法可能是进行3次正则表达式检查,每种字符类型一次检查存在性。

\w*$
只匹配字母、数字和下划线。这就是你想要的:

Regex.IsMatch("@1?hsjpere33z", @"^(?=.*?\d)(?=.*?[a-z])(?=.*?\W).*$", RegexOptions.IgnoreCase)
我将验证移到左侧,并在
\w
之前添加了
\w*

编辑:也使用
*
而不是
\w
进行测试查找头。

这很难使用正则表达式(至少只有一个)。在正则表达式中,您为字段指定了一个顺序,因此解析器希望字段按该顺序排列

另一种选择是使用选项,但这将使您很难检查您是否具有以下每个术语中的一个:

[\w|\d|\W]{4,}
如果要使用正则表达式,请选中其中三个:

1) 有数字吗

2) 有一个角色吗

3) 有什么特别的吗


如果所有这些都是真的。。。。宾果

正则表达式允许任意数量的数字(至少1),因为
\w
匹配数字、字母和下划线。Hi@Mat它可以工作。。但只有在它们按指定顺序排列时。。。我需要他们在任何秩序。。。你有什么办法吗?@Rafael,修正了符号优先密码。