【问题标题】:ASP.NET Regular Expression Validator Not Working on Internet Explorer 7ASP.NET 正则表达式验证器在 Internet Explorer 7 上不起作用
【发布时间】:2011-12-07 08:24:23
【问题描述】:

我正在使用以下正则表达式验证器来确保输入的密码满足 1 个大写、1 个小写、1 个数字和 1 个允许的特殊字符的要求:

    <asp:RegularExpressionValidator ID="rev_txtNewPassword" runat="server" Display="Dynamic"
    ErrorMessage=" Password does not meet requirements" ControlToValidate="txtNewPassword" ValidationGroup="password"
    ValidationExpression="^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[!@#$%^&*]).{8,16}$"></asp:RegularExpressionValidator>

这适用于 FireFox、Chrome、Safari、Internet Explorer 8 和 9。它只是不适用于 Internet Explorer 7。无论在密码框中输入什么,它都表示不符合要求。这是自定义 SharePoint 2010 Web 部件的一部分。

任何想法为什么表达式验证器不能仅在 IE7 上工作?

谢谢

【问题讨论】:

  • 可能重复(或至少此问题的解决方案也适用于您):stackoverflow.com/questions/3241076/…
  • 这就是问题所在,您应该将答案发布为答案,以便我可以标记它。

标签: asp.net regex sharepoint web-parts


【解决方案1】:

根据 OP 的要求,我将解决方案放在这里,以便每个人都可以将此问题视为已解决。问题是由IE regex lookahead bug 引起的,最初的解决方案是由 Alan Moore 提出的。可以在这里找到解决方案:

Solution

【讨论】:

    【解决方案2】:

    即使它有效,用户应该如何知道如何形成一个通过该表达式的有效密码?他们应该一直猜测直到他们得到它吗?如果您需要如此复杂的密码,为您的用户生成它可能是礼貌的。即使您为用户列出了所有规则,一旦变得过于复杂,他们也会感到困惑。

    ASP.NET Membership 有一个基本的密码生成器,例如

    Membership.GeneratePassword(8, 2);
    

    如果您想要更复杂的东西,您可以使用 RNGCryptoServiceProvider.GetBytes() 自行生成随机字节数组,然后将这些字节转换为字符,使用模数来限制范围。

    另请注意,您可以在Membership configuration 中设置密码强度正则表达式:

    <membership defaultProvider="SqlProvider"
      userIsOnlineTimeWindow = "20>
      <providers>
        <add
          name="SqlProvider"
          type="System.Web.Security.SqlMembershipProvider"
          connectionStringName="SqlServices"
          requiresQuestionAndAnswer="true"
          passwordStrengthRegularExpression="^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[!@#$%^&*]).{8,16}$"
          />
       </providers>
    </membership>
    

    【讨论】:

    • 页面上有说明。我们的用户已经习惯了,因为它对我们的许多应用程序都有相同的要求。此外,该实用程序还用于为非常旧的应用程序设置 SQL 用户帐户密码(不在数据库中,是实际的 SQL 用户)。这个解决方案与手头的问题没有任何关系......
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-29
    相关资源
    最近更新 更多