'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; | |
}; |