【发布时间】:2011-04-18 14:02:58
【问题描述】:
我在获取 RegularExpressionValidator 的正则表达式以在客户端上工作时遇到了一些问题:
(?=.{8,})(?=.*[A-Z])(?=.*[\d])(?=.*[\W])|(?=.*[a-z])(?=.*[\d])(?=.*[\W])|(?=.*[A-Z])(?=.*[a-z])(?=.*[\W])|(?=.*[A-Z])(?=.*[a-z])(?=.*[\d])
如果提供的字符串,这个表达式应该返回真
- 至少包含八个字符
- 在“小写字母”/“大写字母”/“数字”/“特殊字符”四组中的三组中至少有一个字符
在 C# (.NET 3.5) 中使用此表达式直接返回不同测试字符串的预期结果,但在客户端浏览器中,有效字符串(例如 aaaaBBB1)不起作用。
我已阅读thread here,因此解释是客户端使用 JavaScript,与 .NET 实现相比,它的工作方式略有不同。
现在我尝试在 JavaScript 中运行我的正则表达式来验证在上面链接的线程中生成的参数,但是在 JavaScript 中我的正则表达式的工作方式与在 C# 中相同。
还有其他方法可以让 RegularExpressionValidator 正常工作吗?我不明白为什么 JavaScript 可以工作(在阅读了实现差异之后我预计它不会工作)但 RegularExpressionValidator 不能。
提前感谢任何指向正确方向的指针。
G.
【问题讨论】:
-
对于特殊的“\X”字符类(如“\d”和“\W”),不需要写成“[\d]”;这与“\d”本身完全相同。
-
@Pointy - 谢谢,不知道
标签: javascript asp.net regex validation