如何使用IsMatch正则表达式没有匹配的字符?

时间:2013-03-08 10:00:45

标签: c#

我尝试检查字符串是否包含任何字符,但不允许使用'\'和'^'。

Regex nameValidator = new Regex("^[\\^]+$"); 

这不起作用:

!nameValidator.IsMatch(myString)

为什么?

3 个答案:

答案 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(@"[\\\^]+"); 

你必须逃避反斜杠和插入符号,所以三重反斜杠。要在没有@的字符串文字中使用它们,你必须再次转义每个反斜杠,所以你有六个。