不允许在正则表达式 C# 中使用反斜杠
本文关键字:正则表达式 不允许 | 更新日期: 2023-09-27 17:56:04
对于用户名字段,某些变体不能选择作为适当的用户名,也不能使用某些字符。
例如:TIM1....TIM9 不能使用 BIN1...。不能使用 BIN9,字符也不能<>:'/|?*
出现在字段中的任何位置。
到目前为止,我的代码是:
private bool ValidateId(string 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]|[<>:'''''"/|?*]");
解释:
需要对 C# 字符串中的反斜杠进行转义,才能在字符串中获取反斜杠。此外,字符串需要有两个反斜杠,因为正则表达式还要求对反斜杠进行转义。
顺便说一句,使用逐字字符串使其更具可读性:
Regex regex = new Regex(@"TIM[1-9]|BIN[1-9]|[<>:''""/|?*]");
这两个代码都将产生具有以下表达式的正则表达式:
TIM[1-9]|BIN[1-9]|[<>:''"/|?*]