0

对于用户名字段,有某些变体不能选作适当的用户名,也不能使用某些字符。

例如:TIM1....TIM9 不能使用 BIN1....BIN9 不能使用,字符也不能<>:\/|?*出现在字段中的任何位置。

我到目前为止的代码是这样的:

    private bool ValidateId(string regexValue)
    {
        Regex regex = new Regex("TIM[1-9]|BIN[1-9]|[<>:\"/|?*]");
        return !regex.IsMatch(regexValue);
    }

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

提前致谢。

4

1 回答 1

4

您需要进行双重转义。试试这个:

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

解释:

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

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

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

两个代码都将生成带有此表达式的正则表达式:

TIM[1-9]|BIN[1-9]|[<>:\\"/|?*]
于 2011-05-10T15:39:52.240 回答