我尝试检查字符串是否包含任何字符,但不允许使用'\'和'^'。
Regex nameValidator = new Regex("^[\\^]+$");
这不起作用:
!nameValidator.IsMatch(myString)
为什么?
答案 0 :(得分:1)
因为字符类中的^具有与外部不同的含义。这意味着否定阶级角色。因此,我的正则表达式将允许除\
和^
Regex nameValidator = new Regex(@"^[^^\\]+$");
答案 1 :(得分:0)
尝试这种方式:
Regex nameValidator = new Regex(@"^[^\^\\]+$");
string sample_text = "hello world";
bool isMatch = nameValidator.IsMatch(sample_text); // true
sample_text = @"Hello ^ \world ";
isMatch = nameValidator.IsMatch(sample_text); // false
答案 2 :(得分:0)
\转义C#中字符串文字的反斜杠。因此,你的正则表达式(正如正则表达式所见)是
^[\^]+$
哪个有效,但不是你想要的。 (被反击的人得到了反对) 改为:
new Regex("[\\\\\\^]+");
或在字符串文字之前使用@(推荐)
new Regex(@"[\\\^]+");
你必须逃避反斜杠和插入符号,所以三重反斜杠。要在没有@的字符串文字中使用它们,你必须再次转义每个反斜杠,所以你有六个。