对于用户名字段,某些变种不能被选为合适的用户名,也不能使用某些字符。
例如:TIM1 .... TIM9不能使用BIN1 .... BIN9不能使用,字符<>:\/|?*
也不能出现在字段的任何地方。
到目前为止我的代码是:
private bool ValidateId(string regexValue)
{
Regex regex = new Regex("TIM[1-9]|BIN[1-9]|[<>:\"/|?*]");
return !regex.IsMatch(regexValue);
}
然而,我正在努力允许的是反斜杠字符。尝试使用引号字符来逃避它似乎不起作用。
提前致谢。
答案 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]|[<>:\\"/|?*]