Задать вопрос
yarkov
@yarkov
Помог ответ? Отметь решением.

Как составить исключающую регулярку?

Имеется чат со списком зарезервированных логинов (боты). Как составить регулярку, которая будет пропускать логины для регистрации, которые не соответствуют логинам из списка? Нужна именно регулярка, чтоб не городить еще один метод для валидации, а использовать модель mongoose.
login: {
		type: String,
		required: true,
		unique: true,
		validate: /[a-zA-Z\d_]{5,16}/          // <- вот тут нужно воткнуть регулярку
	}


UPD1: изменил вот так:
login: {
		type: String,
		required: true,
		unique: true,
		validate: {
			validator: function(v) {
				return /[a-zA-Z\d_]{5,16}/.test(v);
			},
			message: "Некорректный логин '{VALUE}'! Логин может содержать английские буквы, цифры и символ '_'. Допустимая длина логина от 5 до 16 символов."
	    }
	}

Но по прежнему нет проверки на соответствие зарезервированным логинам. Можно в validator сделать if, но как тогда изменить message?
  • Вопрос задан
  • 153 просмотра
Подписаться 1 Оценить Комментировать
Решения вопроса 1
eruditecat
@eruditecat
Красноглазик
UPD: Прошу прощения, первая редакция ответа неверна — поленился разобраться. Вот код Вашего решения:

// Если просто регулярка, то:

var botLoginReg = /^(?!(login1|login2|login3)$)[a-z\d_]{5,16}$/i;

// Если есть массив с логинами (наверняка есть):

var botsLoginsArray = [
    'login1',
    'login2',
    'login3'
];

var botLoginReg = new RegExp(`^(?!(${botsLoginsArray.join('|')})$)[a-zA-Z\d_]{5,16}`, 'i');
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы