ASP.NET RegularExpressionValidator False Trigger



我正在验证的密码必须是字母和数字,至少有一个数字和一个大写字母。 我使用以下正则表达式来执行此操作:

(?=(^[a-zA-Z0-9]{6,16})$)(?=.*d)(?=.*[A-Z])

使用此模式,密码"Valid101"应该是有效的,并且在更好的 .NET 正则表达式测试器和正则表达式测试器中都按预期工作。 但是,当我在 ASP.NET 用户控件的正则表达式验证器中使用它时,它错误地决定密码"Valid101"无效。

我希望有人能提出可能出错的地方。

您拥有的模式仅由零宽度断言和前瞻组成。它们不使用它们匹配的文本,因此正则表达式匹配后的匹配值为空字符串。RegularExpressionValidator 需要完整的字符串匹配(即匹配的字符串应该是整个输入字符串(。

因此,与其(?=(^[a-zA-Z0-9]{6,16})$)(?=.*d)(?=.*[A-Z])使用

^(?=.*d)(?=.*[A-Z])[a-zA-Z0-9]{6,16}$

它将确保字符串中有一个数字和一个大写的 ASCII 字母,然后匹配(使用(6 到 16 个 ASCII 字母和数字。

最新更新