@khomaldi
разбираюсь потихоньку

Как составить рег. выражение для логина?

Здравствуйте. Помогите написать рег. выражение для проверки логина.
Можно: a-zA-Z0-9-
Но логин не может начинаться с "-" и заканчиваться "-". Также нельзя два "-" подряд.

Верно: login, lo-gin, log23gin, log2-3gin.
Ошибка: -login, ---login, login-, login--, log--in

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

РЕШЕНИЕ: от dodo512
/^[a-z0-9](-?[a-z0-9])*$/i
  • Вопрос задан
  • 107 просмотров
Пригласить эксперта
Ответы на вопрос 2
@M4mkin_pr0ger
/^-|-$|-{2,}/ - только отлов ошибки
Дословно: вначале -, или вконце -, или два и более -

v2.0
/^-|-$|-{2,}|[^a-z,A-Z,0-9,-]/ - если не нашлось вхождений, значит логин по шаблону
Находит: - в начале или в конце или в кол-ве >2, любые символы, кроме диапазонов a-z,A-Z,0-9 (кириллические, пробелы и др.)

v3.0 Совершенная версия
/^-|-$|-{2,}|[^a-zA-Z0-9-]/
Ответ написан
sim3x
@sim3x
https://regex101.com/r/CiCKoR/2

const regex = /^[a-z]+(?!-*(-)\1{2,})[a-z0-9-]*[a-z]+$/gmi;
const str = `login
lo-gin
Log23gin
log2-3gin
L--login
L--lo--gin
L---login
---login
login-
login--`;
let m;

while ((m = regex.exec(str)) !== null) {
    // This is necessary to avoid infinite loops with zero-width matches
    if (m.index === regex.lastIndex) {
        regex.lastIndex++;
    }
    
    // The result can be accessed through the `m`-variable.
    m.forEach((match, groupIndex) => {
        console.log(`Found match, group ${groupIndex}: ${match}`);
    });
}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через TM ID
Похожие вопросы
CS Money Санкт-Петербург
от 120 000 до 150 000 руб.
Digital Sharks Казань
от 60 000 до 65 000 руб.
TopHit.ru Москва
от 90 000 до 100 000 руб.
19 янв. 2019, в 09:50
650 руб./за проект
19 янв. 2019, в 07:41
10000 руб./за проект
19 янв. 2019, в 06:34
2500 руб./за проект