1234567891011121314151617181920212223242526272829 |
- 'use strict';
- const isRegexp = require('is-regexp');
-
- const flagMap = {
- global: 'g',
- ignoreCase: 'i',
- multiline: 'm',
- dotAll: 's',
- sticky: 'y',
- unicode: 'u'
- };
-
- module.exports = (regexp, options = {}) => {
- if (!isRegexp(regexp)) {
- throw new TypeError('Expected a RegExp instance');
- }
-
- const flags = Object.keys(flagMap).map(flag => (
- (typeof options[flag] === 'boolean' ? options[flag] : regexp[flag]) ? flagMap[flag] : ''
- )).join('');
-
- const clonedRegexp = new RegExp(options.source || regexp.source, flags);
-
- clonedRegexp.lastIndex = typeof options.lastIndex === 'number' ?
- options.lastIndex :
- regexp.lastIndex;
-
- return clonedRegexp;
- };
|