Регулярное выражение для проверки bucketKey может содержать только: -_.a-z0-9

#javascript #regex

#javascript #регулярное выражение

Вопрос:

     var reg = new RegExp(/[^-_.a-z0-9]/g);
  if (!reg.test(bucketKey)) 
  {
    alert('Wrong  Bucketkey format! Please reEnter correct format, valid bucket key can only contain: -_.a-z0-9');
    return;
    }
 

Код, похоже, не работает, у меня есть еще одна обычная проверка expresssion, но это тоже не работает. Пожалуйста, помогите

 (?=^.{3,63}$)(?!^(d .) d $)(^(([a-z0-9]|[a-z0-9][a-z0-9-]*[a-z0-9]).)*([a-z0-9]|[a-z0-9][a-z0-9-]*[a-z0-9])$)
 

Ответ №1:

Ваш шаблон [^-_.a-z0-9] соответствует символам, которых нет в списке диапазона .

Итак, ваше условие должно быть if (reg.test(bucketKey))

 var reg = new RegExp(/[^-_.a-z0-9]/g);
const bucketKey = ';_a';
if (reg.test(bucketKey)) {
  console.log('Wrong  Bucketkey format!');
} 

Комментарии:

1. Большое спасибо за вашу помощь

Ответ №2:

Вот два способа проверки допустимого шаблона:

 const input = [
  'this-is-ok',
  'good_stuff_123',
  'bad@example',
  'space is bad'
];
const regex1 = /^[-_.a-z0-9] $/;
const regex2 = /[^-_.a-z0-9]/;
input.forEach(str => {
  console.log(str   ':');
  console.log('- regex1: '   regex1.test(str));
  console.log('- regex2: '   regex2.test(str));
}); 

Вывод:

 this-is-ok:
- regex1: true
- regex2: false
good_stuff_123:
- regex1: true
- regex2: false
bad@example:
- regex1: false
- regex2: true
space is bad:
- regex1: false
- regex2: true
 

Примечания:

  • нет необходимости new RegExp(/.../) , если у вас есть фиксированное регулярное выражение, просто используйте /.../
  • регулярное выражение 1 возвращает true, если шаблон в допустимом:
    • ^ $ — привязка в начале и конце
    • [-_.a-z0-9] — сканирование на наличие одного или нескольких допустимых символов (от начала до конца из-за якорей)
  • регулярное выражение 2 возвращает false, если шаблон в допустимом:
    • [^-_.a-z0-9] — сканирование на наличие недопустимого символа в любом месте строки

Комментарии:

1. Большое спасибо за вашу помощь