不允许在正则表达式 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);
    }

然而,我正在努力允许的是反斜杠字符。试图像我对引号字符所做的那样逃避它似乎不起作用。

提前谢谢。

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

你需要做一个双重转义。试试这个:

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]|[<>:''"/|?*]