Вот цикл взятый из функции Вконтакте для парсинга смайликов
for (var i = 0; i < 2; i++) {
for (var code in regs) {
str = str.replace(regs[code], function(match, pre, smile, space) {
return (pre || '') + Emoji.getEmojiHTML(code)+(space || '');
});
}
}
Ссылка на файл -
https://vk.com/js/al/emoji.js?233246401
Строка - 1843.
Насколько я понял, внутренний цикл проходится по объекту с регулярными выражениями и заменяет все вхождения на соответствующий код смайлика. Но для чего делать это дважды? Для чего нужен внешний цикл?