@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
JavaScript
;
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;