分析Regex表达式时出错
本文关键字:出错 表达式 Regex 分析 | 更新日期: 2023-09-27 18:22:45
我希望C#中的正则表达式允许除以下特殊字符之外的所有字符:*~!@#$%^()|'?/<>=+_
所以我创建了以下表达式:^[^'*~!@#'$%'^()|''?/<>=+_]+$
然而,当我使用Regex.IsMatch方法用Regex模式验证用户输入时,我会收到一个错误:
System.ArgumentException:正在分析"*~!@#$%^()|''?/<>=+_"-量词{x,y}不跟随任何东西。
在谷歌中搜索后,我发现我的表达式没有正确转义-,但它被转义了。有人能帮我理解为什么我会出现这个错误吗?
使用@
制作逐字逐句的字符串
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 = @"^[^*~!@#$%^()|''?/<>=+_]+$";