#javascript #регулярные_выражения
Простейшая регулярка и я не пойму в чем ошибка. Нужно проверять что бы в строке не
было "@"
Моя регулярка
reg = /^[^@]{3,30}$/g;
но при использовании вижу следующее
reg = /^[^@]{3,30}$/g;
console.log(reg.test('dddd')); //true
console.log(reg.test('ddddd')); //false
Как так?
Ответы
Ответ 1
Как указано в справке Как и при вызове метода exec() (или при совместном с ним вызове), метод test(), вызванный несколько раз на одном и том же экземпляре регулярного выражения, будет начинать проверку с конца предыдущего сопоставления. Поэтому при следующем вызове reg.test проверка идет не с начала строки, а, в данном случае, с 4 индекса. Как указано в английском ответе это происходит из-за флага g. В случае его отсутствия работать будет ожидаемо: reg = /^[^@]{3,30}$/; console.log(reg.test('dddd')); //true console.log(reg.test('ddddd')); //false
Комментариев нет:
Отправить комментарий