正则表达式默认ASP.NET核心标识密码

Kar*_*sai 12 c# regex asp.net-identity asp.net-core

注意:我认为,这个问题不是这个问题的重复.我的问题是处理asp.net核心身份用于密码验证的默认验证规则以及如何制作正则表达式,而链接的问题正在讨论,一般是关于验证密码的行为(这不能解决我的问题)

ASP.NET Core启用默认的密码验证

  1. 最少8个字符
  2. 应该至少有一个号码
  3. 至少应该有一个大写字母
  4. 至少应该有一个小写字母
  5. 应该至少有一个特殊字符(允许哪些特殊字符?)

记住这些条件我尝试制作以下正则表达式,但它不起作用.

^((?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])|(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[^a-zA-Z0-9])|(?=.*?[A-Z])(?=.*?[0-9])(?=.*?[^a-zA-Z0-9])|(?=.*?[a-z])(?=.*?[0-9])(?=.*?[^a-zA-Z0-9])).{8,}$
Run Code Online (Sandbox Code Playgroud)

即使当点2,3,4,5中的三个条件中的任何一个匹配时,该正则表达式也接受字符串.但我希望所有条件都应该满足.

我在这做错了什么?

MJN*_*ief 18

所以,使用

^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[#$^+=!*()@%&]).{8,}$
Run Code Online (Sandbox Code Playgroud)
  • ^: 第一行
  • (?=.*[az]):至少应有一个小写字母
  • (?=.*[AZ]):至少应有一个大写字母
  • (?=.*\d):至少应有一个数字
  • (?=.[#$ ^ + =!()@%&]):至少应该有一个特殊字符
  • .{8,}:最少8个字符
  • $:结束行

有关更多信息:

  • 最新版本的 ASP.NET Core 不限制特殊字符,因此任何非拉丁字母或数字的字符都是特殊字符。正确的正则表达式应该是: `^(?=.*[az])(?=.*[AZ])(?=.*\d)(?=.*[^a-zA-Z\d]) .{8,}$` 来源:https://github.com/aspnet/AspNetIdentity/blob/b7826741279450c58b230ece98bd04b4815beabf/src/Microsoft.AspNet.Identity.Core/PasswordValidator.cs#L58 (4认同)