匹配’密码’和’管理员’不工作的Jqueryvalidation

我曾尝试为密码编写正则表达式:

public class ApplicationUser : IdentityUser, ITimeStamps { public const string PasswordRegularExpression = @"admin|password"; // public const string PasswordRegularExpression = @"/admin|password/i"; // Tried this too // public const string PasswordRegularExpression = @"/(admin|password)/i"; // Tried this too 

这超出了正常的Microsoft身份标识:

 manager.PasswordValidator = new PasswordValidator { RequiredLength = 6, RequireNonLetterOrDigit = false, RequireDigit = true, RequireLowercase = false, RequireUppercase = false, }; 

这是我的Register视图模型:

 public class RegisterViewModel { [Required] [StringLength(100, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 6)] [DataType(DataType.Password)] [Display(Name = "Password")] [RegularExpression( ApplicationUser.PasswordRegularExpression, ErrorMessage = "The {0} must contain atleast 1 number and must not contain the word 'admin' or 'password'" )] public string Password { get; set; } [DataType(DataType.Password)] [Display(Name = "Confirm password")] [Compare("Password", ErrorMessage = "The password and confirmation password do not match.")] public string ConfirmPassword { get; set; } } 

当有人在密码中使用密码或管理员时,我想在jqueryvalidation中抛出错误。 但是,jqueryvalidation似乎没有按预期工作。 我可能会缺少什么?

asp.net生成的html如下所示:

  

测试用例:

  • 我添加了括号,它仍然没有按预期工作。 我键入密码,它实际上没有失败! 然后我再添加1个字符(无论它是什么)然后它失败了…现在我删除了部分单词“password”,例如’pasrd21234’,错误仍然存​​在!

附注:

  • 我试过用它来测试它: http : //regexhero.net/tester/和正则表达式似乎在那里工作正常吗?
  • 我也试过用它来测试它: http : //regexpal.com/它运行正常吗?

基于正则表达式的答案来匹配不包含单词的行? ,以下正则表达式应匹配任何密码, 除非它包含“admin”或“password”:

 ^((?!(admin|password)).)*$ 

我在Regex101上创建了一个小提琴,用于在将其添加到您的应用程序之前进行测试。