[英]Aspx RegularExpressionValidator works differently on client and server
我在获取正则表达式以使RegularExpressionValidator在客户端上工作时遇到一些问题:
(?=.{8,})(?=.*[A-Z])(?=.*[\d])(?=.*[\W])|(?=.*[a-z])(?=.*[\d])(?=.*[\W])|(?=.*[A-Z])(?=.*[a-z])(?=.*[\W])|(?=.*[A-Z])(?=.*[a-z])(?=.*[\d])
如果提供的字符串,则此表达式应返回true
在C#(.NET 3.5)中使用此表达式可直接返回不同测试字符串的预期结果,但是在客户端浏览器中,有效字符串(例如aaaaaBBB1)不起作用。
我已经在这里阅读了该线程 ,所以一个解释是客户端使用JavaScript的方式与.NET实现相比有所不同。
现在,我尝试在JavaScript中运行正则表达式以验证在上面链接的线程中所做的参数,但是在JavaScript中,我的正则表达式也与C#中的相同。
有没有其他方法可以使RegularExpressionValidator工作? 我不明白为什么JavaScript可以工作(我希望在阅读有关实现的差异后就不能使用),但是RegularExpressionValidator却不能。
在此先感谢您指出正确的方向。
G。
请尝试以下操作:
^(?:(?=.*[A-Z])(?=.*\d)(?=.*\W)|(?=.*[a-z])(?=.*\d)(?=.*\W)|(?=.*[A-Z])(?=.*[a-z])(?=.*\W)|(?=.*[A-Z])(?=.*[a-z])(?=.*\d)).{8,}$
由于长度声明只是第一个替换的一部分,因此您的正则表达式将允许长度小于8的字符串通过。
然后(这可能是问题),您的正则表达式永远不会匹配任何文本,而只会断言。 因此,我将“ length regex”作为字符限制之外的内容,并使其实际匹配。
这应该在JavaScript和.NET中均有效。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.