regex vb.net ismatch总是返回true

时间:2018-05-10 19:58:26

标签: regex vb.net

我正在尝试使用正则表达式实现验证

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]|[ ]|[-]|[_]|[@]|[.]|[!]|[$])*)*")

我做错了什么?

1 个答案:

答案 0 :(得分:1)

您可能会将所有这些角色类合并为一个,从而误用了替换和捕获组。您还有*作为量词,表示零或更多。所以不管锚是否匹配。你的解决方案是:

^[a-zA-Z0-9 _@.!$-]+$