#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. Большое спасибо за вашу помощь