@onereach/webform
Version:
Content Builder includes several views for: - Content builder view itself; - Web Form view; - Slack block-kit builder;
35 lines (31 loc) • 842 B
JavaScript
/*
* Parse body (pattern) and flags
* @param - regexString - like "/\d{2}/gi"
*/
export function getRegexBodyFlags (regexString) {
try {
const {
groups: { body, flags }
} = regexString.match(/^\/(?<body>[^]*)\/(?<flags>\w*?)$/);
return { body, flags };
} catch (err) {
return { body: '', flags: '' };
}
}
/*
* Build a RegExp from a string
*
* "/\d{2}/gi" => new RegExp('\d{2}', 'gi')
* "\d{2}" => new RegExp('\d{2}')
*/
export function convertStringToRegex (regex) {
let { body, flags } = getRegexBodyFlags(regex);
if (body) {
const isFlag = flag => ['g', 'i', 'm', 'u', 'y', 's'].includes(flag);
const uniq = arr => Array.from(new Set(arr));
flags = uniq(flags.split('').filter(isFlag)).join('');
return new RegExp(body, flags);
} else {
return new RegExp(regex);
}
}