Запрещение обратной косой черты в регулярном выражении C # - PullRequest
0 голосов
/ 10 мая 2011

Для поля «Имя пользователя» существуют определенные варианты, которые нельзя выбрать в качестве подходящего имени пользователя, а также нельзя использовать определенные символы.

Например: TIM1 .... TIM9 нельзя использовать BIN1 .... BIN9не может использоваться, и символы <>:\/|?* не могут появляться где-либо в поле.

Код, который у меня есть до сих пор, таков:

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

Однако я стараюсь учестьявляется символом обратной косой чертыПопытка избежать его, как я делал с кавычкой, не работает.

Заранее спасибо.

1 Ответ

4 голосов
/ 10 мая 2011

Вам нужно сделать двойной побег. Попробуйте это:

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