Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   регулярка не верно работает (https://javascript.ru/forum/misc/21833-regulyarka-ne-verno-rabotaet.html)

PeaceCoder 26.09.2011 12:17

регулярка не верно работает
 
вот тут обнаружил толи баг толи фишку регулярок.
str = '.class[.prop][.prop2]';
	re = /(?:\[[^\]]*\])*(\.\w+)?/g
	A = re.exec(str);
	alert(A);
	A = re.exec(str);
	alert(A); // здесь хочу null


C чем се связано? Тест в ФФ

Логика: пропускаем не нужное, цепляем нужное. Если условие не проходит - null

Kolyaj 26.09.2011 12:25

Сначала нашёл .class, потом нашёл .prop. Всё правильно.

Snipe 26.09.2011 12:31

Так ?: слйчайно не значит "нежадный поиск"?

Kolyaj 26.09.2011 12:34

?: значит не сохранять найденное в скобках. Такая оптимизация, когда скобки нужны, а выражение в них не нужно.

PeaceCoder 27.09.2011 12:41

Баг нашел. Дело в том, что там стояло обязательное условие на последнее выражение, и система вычислила его. Но надо было не это. Сейчас переправил регулярку. Работает верно. А можно сделать так чтобы если в последнего выражения нет то выдавался null. Логика: пропускаем не нужное, цепляем нужное. Если условие не проходит - null


Часовой пояс GMT +3, время: 22:50.