Regex к имени пользователя, которое содержит буквы c и не более одного символа подчеркивания в javascript - PullRequest
0 голосов
/ 05 февраля 2020

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

  1. длиной не менее 4 символов.
  2. Должно содержать только буквы, цифры и дополнительное подчеркивание
  3. Не должно заканчиваться на знак подчеркивания
  4. Он должен начинаться с буквы

Я пробовал регулярное выражение,

    /^(?!_*\_*\_*)[A-Za-z]([A-Za-z0-9_]*[A-Za-z0-9])?$/

function validate(username) {
    if ((/^(?!_*\_*\_*)[A-Za-z]([A-Za-z0-9_]*[A-Za-z0-9])?$/).test(username)) {
        return true;
    }
    return false;
}

console.log(validate('hej_gd'));

1 Ответ

2 голосов
/ 05 февраля 2020
  • Длина не менее 4 символов.

В начале, сопоставьте (?=.{4}), чтобы убедиться, что имеется не менее 4 символов

  • Должен содержать только буквы, цифры и необязательное подчеркивание

  • Оно не должно заканчиваться подчеркиванием

Совпадение от нуля или более букв и цифр, за которыми следует необязательный _, за которым следуют одна или несколько букв и цифр, с [a-z\d]*_?[a-z\d]+:

function validate(username) {
    return /^(?=.{4})[a-z\d]*_?[a-z\d]+$/i.test(username);
}

console.log(
  validate('hej_gd'),
  validate('hej_'),
  validate('_hej'),
  validate('h_j'),
  validate('h__j')
);

Флаг i позволяет избежать необходимости повторять a-zA-Z.

Подчеркивание не должно go в символе установите с другими символами, потому что ваши требования состоят в том, чтобы он мог содержать необязательное подчеркивание - вы хотите убедиться, что не более 1 подчеркивания, поэтому должно быть только одно место, где оно может совпадать (с _?).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...