You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
24 lines
474 B
24 lines
474 B
'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; |
|
};
|
|
|