为什么大于和小于符号在以下正则表达式中匹配?

Dav*_*ing 3 regex asp.net

我试图限制用户可以输入文本框并使用此正则表达式的标点符号:

^[\w ,-–\[\\\^\$\.\|\?\*\+\(\)\{\}/!@#&\`\.'\n\r\f\t""’]*$
Run Code Online (Sandbox Code Playgroud)

为什么>和<产生匹配?它们不包含在正则表达式中.注意:这是在asp.net正则表达式验证器中使用.

编辑:这是asp.net源码:

<input runat="server" type="text" id="txt_FName" class="textbox" maxlength="60" />
                    <asp:RegularExpressionValidator ID="rfvRegexFName" runat="server" ControlToValidate="txt_FName" ErrorMessage="<%$ Resources:Subscribe, inputValidationError %>" />
Run Code Online (Sandbox Code Playgroud)

在后面的代码中我添加了表达式:

rfvRegexFName.ValidationExpression = @"^[\w ,-–\[\\\^\$\.\|\?\*\+\(\)\{\}/!@#&\`\.'\n\r\f\t""’]*$";
Run Code Online (Sandbox Code Playgroud)

Bar*_*ers 8

为什么>和<产生匹配?

可能是因为-(连字符),-–匹配字符范围[ ,to ].要么转义连字符,要么将连,\-–字符放在类的开头或结尾,这样会使字符串与字面值匹配-.

另外请注意,你不必逃避$,.,|,?,*,+,(,),{}字符类中