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