Я определяю объект regex, а затем сопоставляю его в цикле. Это только иногда, если быть точным - каждый второй раз. Поэтому я создал небольшой рабочий пример этой проблемы.
Я пробовал этот код в Opera и Firefox. В обоих случаях поведение одинаковое:
>>> domainRegex = /(?:\.|^)([a-z0-9\-]+\.[a-z0-9\-]+)$/g;
/(?:\.|^)([a-z0-9\-]+\.[a-z0-9\-]+)$/g
>>> domainRegex.exec('mail-we0-f174.google.com');
Array [".google.com", "google.com"]
>>> domainRegex.exec('mail-we0-f174.google.com');
null
>>> domainRegex.exec('mail-we0-f174.google.com');
Array [".google.com", "google.com"]
>>> domainRegex.exec('mail-we0-f174.google.com');
null
>>> domainRegex.exec('mail-we0-f174.google.com');
Array [".google.com", "google.com"]
>>> domainRegex.exec('mail-we0-f174.google.com');
null
Почему это происходит? Описан ли это поведение? Есть ли способ вокруг, кроме определения регулярного выражения внутри тела цикла?