如何创建正则表达式以禁止反斜杠

时间:2012-01-22 03:12:41

标签: c# regex

我无法创建正则表达式以禁止以下四个字符并限制大小:

/ # ? \

我目前拥有的是:

Regex regex = new Regex("^[^/\\#?]{0,1024}$", RegexOptions.Compiled);
if (!regex.IsMatch("\\"))
{
    Console.WriteLine("Bad");
}

除了\之外的所有字符都是不允许的。我无法上班。

有关如何支持此事的任何建议吗?

3 个答案:

答案 0 :(得分:4)

你的正则表达式很好,^[^/\\#?]{0,1024}$

但是,在C#反斜杠中是一个转义字符,所以C#"\\"是一个反斜杠。 因此,对于正则表达式中的每个反斜杠,您必须为C#反斜杠

Regex regex = new Regex("^[^/\\\\#?]{0,1024}$", RegexOptions.Compiled);

或者,您可以使用原始字符串,这意味着C#字符串中的反斜杠保留反斜杠(请注意@符号):

Regex regex = new Regex(@"^[^/\\#?]{0,1024}$", RegexOptions.Compiled);

答案 1 :(得分:2)

你很亲密,你需要逃避反斜杠:

  

^[^/\\#?]{0,1024}$

即使您不需要转义字符类中的特殊字符,您也需要转义转义字符本身。

答案 2 :(得分:1)

尝试两个正斜杠。

^[^/\\#?]{0,1024}$

在C ++中,正斜杠是为转义字符保留的,例如\n。要制作文字正斜杠,请使用\\