Как получить информацию о группе неудачных совпадений в регулярном выраженииC#

Место общения программистов C#
Anonymous
Как получить информацию о группе неудачных совпадений в регулярном выражении

Сообщение Anonymous »

Мне нужно включить определенное ограничение при проверке имени пользователя.
Имя пользователя может содержать только следующие символы в своем имени:
  • а-я
  • А-Я
  • 0-9
  • ._-
Кроме того, я хочу отображать неудавшиеся совпадения в представлении, чтобы пользователь мог изменить свои данные.
Таким образом, обычное регулярное выражение будет: @"^[a-z0-9._-]$"(ignoreCase).
Но этот шаблон не может сказать мне, какой именно совпадение не удалось.
Чтобы удовлетворить дополнительные требования, мне нужно сделать следующее:

Код: Выделить всё

@"^(?:(?[a-z])|(?[0-9])|(?[._-]))*$"
.
Но это сработает, если совпадение будет успешным. Если сопоставление не удалось, я не могу определить, какая группа не сработала.
Поэтому мне приходится инвертировать шаблон и добиваться успешного сопоставления, если введенные данные неверны. И здесь я не могу понять, как правильно использовать отрицание, чтобы получить правильный шаблон...
Я полагаю, что если я инвертирую совпадение с регулярным выражением, я смогу выяснить, какой символ использует пользователь введены неправильно и вывести список правил, которые они нарушили.
Например:
  • только [a-z]
    только . _ -
Если пользователь ввел: someNonLatinWord\
Есть ли лучший подход?< /п>

Подробнее здесь: https://stackoverflow.com/questions/787 ... p-in-regex

Вернуться в «C#»