实体框架4.1中的密码强度

时间:2012-01-18 08:27:12

标签: regex asp.net-mvc-3

我需要为Entity Frame work 4.1模型类的密码属性创建一个正则表达式。

要求是:

密码必须为6-18个字符,并且至少包含一个字母和一个数字。允许使用特殊字符,例如@,%和&,#。

    [Required]
    [StringLength(18, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 6)]
    [RegularExpression(@"^((?=.*[a-z])(?=.*[A-Z])(?=.*\d)).+$", ErrorMessage = "Password doesn't meet the requirements")]
    [DataType(DataType.Password)]
    [Display(Name = "Password")]
    public string Password { get; set; }

如何修改它以允许特殊字符。这个正则表达式强制使用一个字母和一个字符,如果不是,我该如何更改正则表达式。有人建议我在web.config中的membership /提供者标签中添加这个逻辑。我怎么能在web.config中执行此操作。

<membership>
      <providers>
        <clear />
        <add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider"
             connectionStringName="CreditRegistryDB" enablePasswordRetrieval="false" enablePasswordReset="true"
             requiresQuestionAndAnswer="false" requiresUniqueEmail="false" passwordStrengthRegularExpression =""
             maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="1" passwordAttemptWindow="10" applicationName="/" />
      </providers>
    </membership>

1 个答案:

答案 0 :(得分:2)

以下正则表达式应符合您的要求:

^.*(?=.{6,18})(?=.*\d)(?=.*[A-Za-z])(?=.*[@%&#]{0,}).*$

这有以下要求:

  • 长度 6到18个字符之间
  • 必须至少包含一个字母一个数字
  • 可能包含列表中的一个或多个特殊字符 @,%,&amp;和#

特殊字符代表以下内容后的花括号

  • {1}完全出现1次;
  • {6,}至少发生6次;
  • {2,6}发生2至6次。
  • {0,}至少出现0次; &lt; - 在你的情况下

您可以使用REGex TESTER测试此正则表达式,以确保它符合您的要求。