#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
Комментариев нет:
Отправить комментарий