Регулярные выражения работают через раз 
		
		
		
		Добрый вечер! 
	Возникла проблема: Есть вот такой массив регулярок (проверяет ссылки на принадлежность к файлообменникам): 
var pattern=[
/https{0,1}:\/\/(www.){0,1}rapidshare.com\/.*/gi ,
/https{0,1}:\/\/(www.){0,1}letitbit.net\/.*/gi
]
Выполняю один и тот же код в разной последовательности: ab 
var a="http://www.rapidshare.com/files/421054723/Avatar.2010.DVD5.part01.rar";
var b="http://www.rapidshare.com/files/421054763/Avatar.2010.DVD5.part02.rar";
if(pattern[0].test(a)){alert(a);}
if(pattern[0].test(b)){alert(b);}
Выводится только переменная a; ba 
var a="http://www.rapidshare.com/files/421054723/Avatar.2010.DVD5.part01.rar";
var b="http://www.rapidshare.com/files/421054763/Avatar.2010.DVD5.part02.rar";
if(pattern[0].test(b)){alert(b);}
if(pattern[0].test(a)){alert(a);}
Выводится только переменная b; Хотя по логике должны выводиться обе переменные, только в разной последовательности. Но выходит что регулярка работает при первой проверке, но не работает при второй. Более того, они работают при нечетных проверках, и не работают при четных (проверял практически)! В чем проблема, чего я не понимаю? Помогите пожалуйста!!! Спасибо!!!  | 
	
		
 а что по вашему должен делать модификатор g? 
	раз уж используете его, то и почитали бы как именно он работает http://javascript.ru/RegExp/lastIndex http://javascript.ru/tutorial/regexp-specials#nayti-vse  | 
	
		
 Да, убрал модификатор g и все заработало! Спасибо! 
	 | 
	
		
 У вас во-первых в выражении указан протокол 'https', во-вторых, названия всех файлообменников как-правило уникальны и можно значительно сократить выражение... 
	Можно же все проще сделать: 
var str = ['http://rapidshare.com', 'http://letitbit.net', 'http://ifolder.ru']
var reg = /rapidshare|letitbit|ifolder/;
for(i=0; i<str.length; i++){
    if(reg.test(str[i])){
         alert(str[i]);
    }
}
Ну а относительно вашего примера: 
var pattern=[/rapidshare/]
var b="http://www.rapidshare.com/files/421054763/Avatar.2010.DVD5.part02.rar";
var a="http://www.rapidshare.com/files/421054723/Avatar.2010.DVD5.part01.rar";
if(pattern[0].test(a)){alert(a);}
if(pattern[0].test(b)){alert(b);}
 | 
	
		
 monolithed  
	В моем регулярном выражении 
/https{0,1}:\/\/(www.){0,1}rapidshare.com\/.*/i
https{0,1} говорит о том, что http встречается обязательно, а s - 0 или 1 раз. То есть тут охвачен и http и https. Действительно можно упростить регулярку, но на разных сайтах встречаются ссылки разного вида (с www и без), и к тому же могут встретиться ссылки, содержащие названия файлообменника, а вести на какой-то сайт. Если честно, то начал с самого простого, а на этапе тестирования пришлось усложнить :) Спасибо за участие в дискуссии  | 
	
		
 На последок вставлю свои пять копеек: вместо '{0,1}' юзайте '?' - кошернее.) 
	 | 
| Часовой пояс GMT +3, время: 02:43. |