分析Regex表达式时出错

本文关键字:出错 表达式 Regex 分析 | 更新日期: 2023-09-27 18:22:45

我希望C#中的正则表达式允许除以下特殊字符之外的所有字符:*~!@#$%^()|'?/<>=+_

所以我创建了以下表达式:^[^'*~!@#'$%'^()|''?/<>=+_]+$

然而,当我使用Regex.IsMatch方法用Regex模式验证用户输入时,我会收到一个错误:

System.ArgumentException:正在分析"*~!@#$%^()|''?/<>=+_"-量词{x,y}不跟随任何东西。

在谷歌中搜索后,我发现我的表达式没有正确转义-,但它被转义了。有人能帮我理解为什么我会出现这个错误吗?

分析Regex表达式时出错

使用@制作逐字逐句的字符串

string myRegex =  @"^[^'*~!@#'$%'^()|''?'/<>=+_]+$";

感谢stribizhev这里的问题是:

string myRegex = "^[^'*~!@#'$%'^()|''?/<>=+_]+$";
                     ^     ^  ^

事实上,你用这个代码得到的错误是:

prog.cs(7,24): error CS1009: Unrecognized escape sequence `'*'
prog.cs(7,30): error CS1009: Unrecognized escape sequence `'$'
prog.cs(7,33): error CS1009: Unrecognized escape sequence `'^'

您的正则表达式应该如下所示:

var rx = @"^[^*~!@#$%^()|''?/<>=+_]+$";