0

我有一个验证密码字段的 RegularExpressionValidator。密码必须包含字母和至少 1 个数字,并且必须介于 8 到 20 个字符之间。这是我的验证器:

<asp:RegularExpressionValidator ID="regexPassword" runat="server" ControlToValidate="txtNewPassword"
                ValidationExpression="^(?=.*[0-9])(?=.*[a-zA-Z])\w{8,20}$" ErrorMessage="Password must contain at least one digit and must be between 8 and 20 characters"
                Text="*" ValidationGroup="Passwords"></asp:RegularExpressionValidator>

这在我的开发环境中非常有效,当我在本地机器上工作时,但是当我将它迁移到生产环境时它不起作用。在生产环境中,我必须从一个数字开始,它才能通过。我们的生产环境正在运行 Win 2k8 R2 机器,但我无法想象这很重要。我在这里发现了另一个帖子,说这个表达式可以工作,所以我测试了它,确实它确实有效......但只在我的开发环境中。谁能明白为什么在我的生产环境中,我必须从一个数字开始才能工作?该数字应位于密码中的任何位置。

谢谢

4

1 回答 1

1

尝试这个:

^(?=\w{8,20}$)(?=.*[0-9])(?=.*[a-zA-Z]).*

它与 IE6 错误有关,但它可能仍然适用,具体取决于您的生产机器上运行的 ASP.NET 版本。

于 2012-08-30T13:16:14.190 回答