UNPKG

@dpatt/delimiterized-regex-builder

Version:

Generate a regex from an array of strings to match all of the strings in order, separated by a delimiter.

32 lines (31 loc) 1.17 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.generateRegexFromArray = exports.DelimiterEnum = exports.escapeRegExp = void 0; /** * Escape special characters in a string to use in a regular expression * @param string * @returns string with escaped characters */ function escapeRegExp(string) { return string.replace(/[.*+?^${}()|[\]\\]/gi, "\\$&"); } exports.escapeRegExp = escapeRegExp; var DelimiterEnum; (function (DelimiterEnum) { DelimiterEnum["wildcards"] = ".*"; DelimiterEnum["whitespace"] = "[\\s\\n]+"; DelimiterEnum["or"] = "|"; })(DelimiterEnum || (exports.DelimiterEnum = DelimiterEnum = {})); /** * Generate a regex from an array of strings to match all of the strings, in order, separated by a delimiter * @param array * @param delimiter - the delimiter to use between the strings. Defaults to whitespace * @returns regex */ function generateRegexFromArray(array, delimiter = DelimiterEnum.whitespace) { return new RegExp(array .map((item) => escapeRegExp(item.trim())) .join(delimiter) .trim(), "si"); } exports.generateRegexFromArray = generateRegexFromArray;