在正则表达式C#中禁用反斜杠

时间:2011-05-10 15:35:21

标签: c# regex backslash

对于用户名字段,某些变种不能被选为合适的用户名,也不能使用某些字符。

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

到目前为止我的代码是:

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

然而,我正在努力允许的是反斜杠字符。尝试使用引号字符来逃避它似乎不起作用。

提前致谢。

1 个答案:

答案 0 :(得分:4)

你需要做双重逃脱。试试这个:

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

说明:

您需要转义C#字符串中的反斜杠才能在字符串中获得反斜杠。另外,字符串需要有两个反斜杠,因为正则表达式还需要转义反斜杠。

BTW,使用逐字字符串使其更具可读性:

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

这两个代码都会产生带有此表达式的正则表达式:

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