Имя пользователя может содержать только следующие символы в своем имени:
- а-я
- А-Я
- 0-9
- ._-
Таким образом, обычное регулярное выражение будет: @"^[a-z0-9._-]$"(ignoreCase).
Но этот шаблон не может сказать мне, какой именно совпадение не удалось.
Чтобы удовлетворить дополнительные требования, мне нужно сделать следующее:
Код: Выделить всё
@"^(?:(?[a-z])|(?[0-9])|(?[._-]))*$"Но это сработает, если совпадение будет успешным. Если сопоставление не удалось, я не могу определить, какая группа не сработала.
Поэтому мне приходится инвертировать шаблон и добиваться успешного сопоставления, если введенные данные неверны. И здесь я не могу понять, как правильно использовать отрицание, чтобы получить правильный шаблон...
Я полагаю, что если я инвертирую совпадение с регулярным выражением, я смогу выяснить, какой символ использует пользователь введены неправильно и вывести список правил, которые они нарушили.
Например:
- только [a-z]
только . _ -
Есть ли лучший подход?< /п>
Подробнее здесь: https://stackoverflow.com/questions/787 ... p-in-regex