javascript аналог preg_match_all

function preg_match_all(regex, haystack) {
    'use strict';
    var globalRegex = new RegExp(regex, 'g'),
        nonGlobalRegex = new RegExp(regex),
        nonGlobalMatch,
        globalMatch = haystack.match(globalRegex),
        matchArray,
        i;

    matchArray = [];

    for (i = 0; i < globalMatch.length; i += 1) {
        nonGlobalMatch = globalMatch[i].match(nonGlobalRegex);
        matchArray.push(nonGlobalMatch[1]);
    }

    return matchArray;
}
Рассказать друзьям
author.jpg

Платная консультация по вопросам 1500 руб/час

Прочитали статью и остались вопросы? Меня зовут Валерий и я её автор. С радостью объясню Вам в скайпе все затруднительные моменты, которые остались за рамками статьи!

Подробнее ...

Добавить комментарий


Комментарии   

MihanEntalpo
0 # MihanEntalpo 03.05.2016 09:38
Можно чуть улучшить эту функцию, для этого надо вынести nonGlobalRegex = new RegExp(regex); за пределы цикла.
Получится:
function preg_match_all(regex, haystack) {
var globalRegex = new RegExp(regex, 'g');
var globalMatch = haystack.match(globalRegex);
matchArray = new Array();
nonGlobalRegex = new RegExp(regex);
for (var i in globalMatch) {
nonGlobalMatch = globalMatch.match(nonGlobalRegex);
matchArray.push(nonGlobalMatch[1]);
}
return matchArray;
}
Ответить | Ответить с цитатой | Цитировать
Leroy
0 # Leroy 04.05.2016 08:51
Спасибо, исправил.
Ответить | Ответить с цитатой | Цитировать