UNPKG

@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
/* * 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); } }