JSFiddle - React, Tailwind, and code Playground
by Sahin Deniz
JavaScript 1.7
let pattern = `l[a-z]?m`;
pattern = pattern.replace(
/(?:[\p{L}\p{N}](?![^[]*\]))|(?:[\p{L}\p{N}](?![^[]*\]))|\[.*?\]\??/giu,
AppendAnyCharModifier
);
function AppendAnyCharModifier(_char, singleChar) {
let length = 1;
let char = _char;
console.log(char, singleChar);
if (singleChar && typeof singleChar !== "number") {
length = char.length;
char = singleChar;
}
let excludedChars = "şğ"
if (char.startsWith("[") && char.endsWith("]?")) {
length = 0;
char = char.replace("?", "");
if (char.includes("a-z"))
char = char.replace(/a-z/i, `a-z${excludedChars}`);
} else if (char.startsWith("[") && char.endsWith("]")) length = 1;
return `${char}{${length},}[\\W_]{0,}`;
}
pattern = pattern.replace(/\[\\W_]\{0,}$/, "");
let regexp = new RegExp(pattern, "i");
console.log(regexp);
console.log("lo@rem".match(regexp));