我无法创建正则表达式以禁止以下四个字符并限制大小:
/ # ? \
我目前拥有的是:
Regex regex = new Regex("^[^/\\#?]{0,1024}$", RegexOptions.Compiled);
if (!regex.IsMatch("\\"))
{
Console.WriteLine("Bad");
}
除了\之外的所有字符都是不允许的。我无法上班。
有关如何支持此事的任何建议吗?
答案 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
。要制作文字正斜杠,请使用\\
。