34 lines
894 B
JavaScript
34 lines
894 B
JavaScript
"use strict";
|
|
|
|
/**
|
|
* RegexParser
|
|
* Parses a string input.
|
|
*
|
|
* @name RegexParser
|
|
* @function
|
|
* @param {String} input The string input that should be parsed as regular
|
|
* expression.
|
|
* @return {RegExp} The parsed regular expression.
|
|
*/
|
|
var RegexParser = module.exports = function (input) {
|
|
// Validate input
|
|
if (typeof input !== "string") {
|
|
throw new Error("Invalid input. Input must be a string");
|
|
}
|
|
|
|
// Parse input
|
|
var m = input.match(/(\/?)(.+)\1([a-z]*)/i);
|
|
|
|
// If there's no match, throw an error
|
|
if (!m) {
|
|
throw new Error("Invalid regular expression format.");
|
|
}
|
|
|
|
// Filter valid flags: 'g', 'i', 'm', 's', 'u', and 'y'
|
|
var validFlags = Array.from(new Set(m[3])).filter(function (flag) {
|
|
return "gimsuy".includes(flag);
|
|
}).join("");
|
|
|
|
// Create the regular expression
|
|
return new RegExp(m[2], validFlags);
|
|
}; |