- Длина не менее 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 подчеркивания, поэтому должно быть только одно место, где оно может совпадать (с _?
).