C# 在正则表达式C中不允许反斜杠#

C# 在正则表达式C中不允许反斜杠#,c#,regex,backslash,C#,Regex,Backslash,对于用户名字段,某些变量不能选择为适当的用户名,也不能使用某些字符 例如:TIM1…TIM9不能用于BIN1…BIN9不能用于,字符:\/?*也不能出现在字段中的任何位置 到目前为止,我的代码是: private bool ValidateId(string regexValue) { Regex regex = new Regex("TIM[1-9]|BIN[1-9]|[<>:\"/|?*]"); return !regex.IsMa

对于用户名字段,某些变量不能选择为适当的用户名,也不能使用某些字符

例如:TIM1…TIM9不能用于BIN1…BIN9不能用于,字符
:\/?*
也不能出现在字段中的任何位置

到目前为止,我的代码是:

    private bool ValidateId(string regexValue)
    {
        Regex regex = new Regex("TIM[1-9]|BIN[1-9]|[<>:\"/|?*]");
        return !regex.IsMatch(regexValue);
    }
private bool ValidateId(字符串regexValue)
{
Regex Regex=new Regex(“TIM[1-9]| BIN[1-9]|[:\”/|?*]);
return!regex.IsMatch(regexValue);
}
然而,我努力考虑的是反斜杠字符。像我使用引号字符那样试图逃避它似乎不起作用


提前感谢。

您需要进行双重转义。请尝试以下操作:

Regex regex = new Regex("TIM[1-9]|BIN[1-9]|[<>:\\\\\"/|?*]");
Regex Regex=new Regex(“TIM[1-9]| BIN[1-9]|[:/?*]);
说明:

需要在C#字符串中转义反斜杠,才能在字符串中获得反斜杠。此外,字符串需要有两个反斜杠,因为Regex还要求对反斜杠进行转义

顺便说一句,使用逐字字符串使其更具可读性:

Regex regex = new Regex(@"TIM[1-9]|BIN[1-9]|[<>:\\""/|?*]");
Regex Regex=newregex(@“TIM[1-9]| BIN[1-9]|[:\\”“/|?*]”);
这两个代码都将生成具有以下表达式的正则表达式:

TIM[1-9]|BIN[1-9]|[<>:\\"/|?*]
TIM[1-9]| BIN[1-9]|[:\\“/|?*]

您需要执行双重转义。请尝试以下操作:

Regex regex = new Regex("TIM[1-9]|BIN[1-9]|[<>:\\\\\"/|?*]");
Regex Regex=new Regex(“TIM[1-9]| BIN[1-9]|[:/?*]);
说明:

需要在C#字符串中转义反斜杠,才能在字符串中获得反斜杠。此外,字符串需要有两个反斜杠,因为Regex还要求对反斜杠进行转义

顺便说一句,使用逐字字符串使其更具可读性:

Regex regex = new Regex(@"TIM[1-9]|BIN[1-9]|[<>:\\""/|?*]");
Regex Regex=newregex(@“TIM[1-9]| BIN[1-9]|[:\\”“/|?*]”);
这两个代码都将生成具有以下表达式的正则表达式:

TIM[1-9]|BIN[1-9]|[<>:\\"/|?*]
TIM[1-9]| BIN[1-9]|[:\\“/|?*]

允许?意味着反斜杠是一个有效字符?什么反斜杠字符?你能显示正则表达式在没有任何C#字符串转义干扰的情况下应该是什么样子吗?最好验证你想要的,而不是你不想要的。@Stargazer712:方言的东西-当我说“允许我的意思”时,是要考虑在内的,使其在其他字符中无效。@Jason:不总是。如果您想要的是“除X以外的所有字符”,我不明白为什么不可以。例如,这个正则表达式的补码会变得不必要的复杂。只要确保您确实想要“除…以外的所有字符”(future@Raymond:是的,刚刚注意到。我在阅读--Perl--一堆非单空格字体的标点符号时有困难;)允许?意思是反斜杠是一个有效字符?什么反斜杠字符?你能显示正则表达式在没有任何C#字符串转义符的情况下应该是什么样子吗?最好验证你想要的,而不是你不想要的。@Stargazer712:方言的东西-当我说允许我的意思是考虑在内,render它对其他字符无效。@Jason:不总是。如果你想要的是“除X以外的所有字符”,我不明白为什么不可以。例如,这个正则表达式的补码会变得不必要的复杂。只要确保你真的想要“除…以外的所有字符”(future@Raymond:是的,刚刚注意到。我在阅读--Perl--一堆非单空格字体的标点符号时有困难;)