如何创建一个正则表达式来禁止反斜杠

本文关键字:禁止 正则表达式 何创建 创建 一个 | 更新日期: 2023-09-27 18:20:57

我在创建一个正则表达式以禁止以下四个字符并限制大小时遇到问题:

/#?''

我目前拥有的是:

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

不允许使用除''以外的所有字符。我不能去上班。

关于如何支持这一点,有什么建议吗?

如何创建一个正则表达式来禁止反斜杠

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

但是,在C#中,反斜杠是一个转义符,因此C#"''"是一个反斜杠。因此,对于正则表达式中的每个反斜杠,您必须再次对C#的进行反斜杠

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

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

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

你很接近,你需要转义反斜杠:

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

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

尝试两个正向斜杠。

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

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