| 'use strict'; | |
| const cloneRegexp = require('clone-regexp'); | |
| module.exports = (regexp, string) => { | |
| let match; | |
| const matches = []; | |
| const clonedRegexp = cloneRegexp(regexp, {lastIndex: 0}); | |
| const isGlobal = clonedRegexp.global; | |
| // eslint-disable-next-line no-cond-assign | |
| while (match = clonedRegexp.exec(string)) { | |
| matches.push({ | |
| match: match[0], | |
| subMatches: match.slice(1), | |
| index: match.index | |
| }); | |
| if (!isGlobal) { | |
| break; | |
| } | |
| } | |
| return matches; | |
| }; |