Показать сообщение отдельно
  #1 (permalink)  
Старый 03.03.2015, 03:38
Новичок на форуме
Отправить личное сообщение для Вячеслав Александрович Посмотреть профиль Найти все сообщения от Вячеслав Александрович
 
Регистрация: 26.02.2015
Сообщений: 7

Разница между литеральной формой и объектом RegExp
Код:
var $eMail = 'blah-blah9@blah-blah-blah9.blahblahblah';

alert(($eMail.match(/^[-_a-z0-9\.]+@(?:[-_a-z0-9]+(?=\.)\.)+[a-z]{2,6}$/i)) === null);/ Выводит true

var $reg = new RegExp('^[-_a-z0-9\.]+@(?:[-_a-z0-9]+(?=\.)\.)+[a-z]{2,6}$', 'i');

alert(($eMail.match($reg) === null);/ Выводит false
Регулярки в обоих случаях одинаковые, в документации везде пишут, что случай №1 - это сокращенная форма, а №2 - полная. Но работают, судя по всему, по разному.
Почему так? Может кто подскажет?
Ушатал из-за этой непонятной разницы целые сутки. Переписывал регулярку по разному (думал, что неправильно пишу регулярку), экспериментировал (с объектом RegExp) и никак не мог понять почему не работает, пока не переписал в виде литерала и все заработало.
Ответить с цитированием