shaikh-adil Ответов: 1

Проверка идентификатора пользователя с помощью регулярных выражений


Я создаю проверку имени пользователя. Я использую это регулярное выражение:
^[a-zA-Z0-9][a-zA-Z0-9_\-]{0,4}[a-zA-Z0-9]$

который принимает входные данные, допускающие нижний регистр, верхний регистр, цифры, дефисы и подчеркивания. Дефис и подчеркивание не должны находиться в начале или конце строки. Я не хочу, чтобы имя пользователя включало два последовательных дефиса или подчеркивания, например Aquib- -qureshi или aquib_ _qureshi (пробелы показаны только для ясности).

Могу ли я сделать это с помощью регулярных выражений или мне нужно написать фрагмент кода для поиска этих последовательных символов?

Как это сделать? Может ли кто - нибудь помочь мне с примером?

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

ridoy

нет, вам не нужно использовать код для этого..добавьте _ _/-- с вашим регулярным выражением

1 Ответов

Рейтинг:
2

Yvan Rodrigues

^([a-zA-Z0-9](?(?!__|--)[a-zA-Z0-9_\-])+[a-zA-Z0-9])$

или
^([a-zA-Z0-9](?(?!__|--)[a-zA-Z0-9_\-]){0,4}[a-zA-Z0-9])$

чтобы ограничить до 6 символов, как в вашем примере.

Волшебный соус-это отрицательное утверждение lookaround.

Пожалуйста, отметьте ответил если я помогу тебе. —Иван


ridoy

да, это тот самый, как я уже сказал...+5

shaikh-adil

{0,4}
это займет 5 часов, верно? Так как же 6 будет принято? Я тебя не поймал

Yvan Rodrigues

Нет, это займет от нуля до четырех совпадений символов; плюс начальные и конечные символы == 6.

shaikh-adil

какая разница между вашим регулярным выражением и этим?
Ты можешь объяснить братан
^[a-zA-Z0-9]{1,5}(-[a-zA-Z0-9]{1,5}|_[a-zA-Z0-9]{1,5})?$

Yvan Rodrigues

Что означает:
- начните с 1 и 5 символов из набора a-z, A-Z, 0-9.
- следующий символ должен быть дефисом или подчеркиванием.
- заканчиваются от 1 до 5 символов из набора a-z, A-Z, 0-9.

- там должно быть от 3 до 11 символов.

Сделайте себе одолжение и скачивайте Экспрессо и прочитайте "30-минутный учебник по регулярным выражениям" на этом сайте.

shaikh-adil

Извини, братан. Но у меня скачать его не так просто, чтобы понять. Я ничего не могу там достать, поэтому спросил здесь.
И кстати.
какая разница между вашим регулярным выражением и этим?
Ты можешь объяснить братан
^[a-zA-Z0-9]{1,5}(-[a-zA-Z0-9]{1,5}|_[a-zA-Z0-9]{1,5})?$
правильно ли это? И то же самое, что и ваше право?
Ваш выход и этот выход будут равны

Yvan Rodrigues

Нет, не то же самое.
Во-первых, ваш может быть сокращен до ^[a-zA-Z0-9]{1,5}([\-_][a-zA-Z0-9]{1,5})?$; однако она более ограничительна, чем моя.
Вот несколько примеров различий.
Мой позволит, твой запретит:

happy_fun_user
кроличья лапка
7
Салли-Джин Смит

shaikh-adil

но в какой-либо форме вы видели какое-либо имя пользователя, которое будет иметь подчеркивания и хифен в одном и том же месте одновременно?

Yvan Rodrigues

Я не понимаю. Я думаю, вам нужно точно уточнить, что вы хотите разрешить/запретить и каковы ваши допустимые минимальные/максимальные длины.

shaikh-adil

как Салли-Джин Смит?
Это действительно так?? Для имени пользователя?
А в вашем случае
только 7 является приемлемым? Is - это не такая уж хорошая вещь. Вы думаете

shaikh-adil

мне нужно имя пользователя i
который будет не менее 4 символов и не более 15 символы
что позволит использовать hifen, подчеркивание и точку посередине, но не в начале и конце имени пользователя
(что не позволит использовать символы, кроме hifen, подчеркивания и точки)
следует запретить
-aquib
_aquib
.aquibxyz
aquib.
aquibxyz--Куреши
aquib__xyzqureshi
aquibqureshi-
aquib..Куреши
aquib_ // означает, что в конце не будет никаких символов
и имя пользователя не должно быть цифрами это должно быть смешение цифр и алфавитов или это должны быть только алфавиты
надеюсь, это будет понятно.

Yvan Rodrigues

Конечно, это можно сделать с помощью регулярных выражений. Из-за всех предложений он потребует не менее 3 выражений, разделенных оператором|. К сожалению, вам придется найти кого-то, у кого будет больше свободного времени, чем у меня.

shaikh-adil

братан у меня есть это регулярное выражение
(?!^[a-zA-Z0-9\.\-_]{1,2}$)(?!^[a-zA-Z0-9\.\-_]{16,}$)(?!^[0-9]{3,15}$)^(?:[a-zA-Z0-9](?:\.|_|-)?)+[a-zA-Z0-9]$
а это то же самое что я хочу этого не требуется
аквиб__Куреши
aquib..Куреши
aquib--Куреши
-aquib
aquib-
aquib_
aquib_
это означает, что он не принимает никаких символов в начале и конце и не может принимать никаких последовательных символов
но проблема в том, что он принимает этот тип значений
aquib_qureshi-
мне нужен только один символ в ряду.
не могли бы вы мне помочь пожалуйста

shaikh-adil

ладно, я думаю, ты мне поможешь. Я подумал, что должен добавить точку с тире и подчеркиванием в свое регулярное выражение. Но мне не повезло. Это тебе не поможет.
Но в любом случае приятно провести время братан