我的正则表达式出了什么问题

时间:2012-08-30 12:28:25

标签: asp.net regex

我有一个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机器,但我无法想象那些重要的事情。我在这里发现了另一篇帖子,说这个表达式可以工作,所以我测试了它确实它确实有效...但只在我的开发环境中。 任何人都可以看到为什么,在我的生产环境中,我必须从一个数字开始为此工作?该号码应该在密码的任何位置。

由于

1 个答案:

答案 0 :(得分:1)

试试这个:

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

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