我正在尝试使用正则表达式实现验证
aspx页面中的验证工作正常
<asp:RegularExpressionValidator ID="regexEmailValid" display="none" runat="server" ValidationExpression="(([a-z]|[A-Z]|[0-9]|[ ]|[-]|[_]|[@]|[.]|[!]|[$])*)*" ControlToValidate="txtUser" ErrorMessage="Invalid User Name Format"></asp:RegularExpressionValidator>
后面的代码中的同一个总是返回true
Regex.IsMatch(UserName, "(([a-z]|[A-Z]|[0-9]|[ ]|[-]|[_]|[@]|[.]|[!]|[$])*)*")
尝试添加 ^ 来启动但仍然总是返回true
Regex.IsMatch(UserName, "^(([a-z]|[A-Z]|[0-9]|[ ]|[-]|[_]|[@]|[.]|[!]|[$])*)*")
我做错了什么?
答案 0 :(得分:1)
您可能会将所有这些角色类合并为一个,从而误用了替换和捕获组。您还有*
作为量词,表示零或更多。所以不管锚是否匹配。你的解决方案是:
^[a-zA-Z0-9 _@.!$-]+$