ES6 RegEx iterator

Данный пример возвращает итератор, который потом можно использовать для forEach или для for

const matches = (text, pattern) => ({
  [Symbol.iterator]: function * () {
    const clone = new RegExp(pattern.source, pattern.flags);
    let match = null;
    do {
      match = clone.exec(text);
      if (match) {
        yield match;
      }
    } while (match);
  }
});

И пример использования.

for (const match of matches('abcdefabcdef', /ab/g)) {
  console.log(match);
}