【问题标题】:Regex for default ASP.NET Core Identity Password默认 ASP.NET Core 身份密码的正则表达式
【发布时间】:2018-07-16 01:14:43
【问题描述】:

注意:我相信这个问题不是这个question 的重复。我的问题是处理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,}$

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

我在这里做错了什么?

【问题讨论】:

  • 当您说“它不工作”时请具体说明。哪个输入失败了?
  • @CodeFuller 更新
  • 您的假设正确。密码规则通过PasswordOptions配置,默认长度为6,1个唯一字符,至少1个非字母数字,1个小写,1个大写,1个数字。 – 规则是可配置的,将其作为正则表达式确实没有什么意义。为什么要将它作为正则表达式?
  • 我希望在客户端处理这个问题。所以在输入中我也会在客户端进行验证。

标签: c# regex asp.net-core asp.net-identity


【解决方案1】:

所以,使用

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

更多信息:this

【讨论】:

  • 最新版本的 ASP.NET Core 不限制特殊字符,因此任何不是拉丁字母或数字的都是特殊字符。正确的正则表达式应该是:^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[^a-zA-Z\d]).{8,}$ 来源:github.com/aspnet/AspNetIdentity/blob/…
猜你喜欢
  • 2012-03-29
  • 1970-01-01
  • 2014-04-09
  • 2010-10-20
  • 1970-01-01
  • 1970-01-01
  • 2010-11-18
相关资源
最近更新 更多