Skip to content

Instantly share code, notes, and snippets.

@getify
Last active July 20, 2022 19:31
Show Gist options
  • Select an option

  • Save getify/42bd49e12b3b64664235210d916a226a to your computer and use it in GitHub Desktop.

Select an option

Save getify/42bd49e12b3b64664235210d916a226a to your computer and use it in GitHub Desktop.
regex matching escaped or non-escaped character
var a = "j"; // "j"
var b = "\\j"; // "\j"
var c = "\\\\j"; // "\\j"
var d = "\\\\\\j"; // "\\\j"
var e = "\\\\\\\\j"; // "\\\\j"
var f = "\\\\\\\\\\j"; // "\\\\\j"
var just_j = nonescapedRE("j");
just_j.test(a); // true
just_j.test(b); // false
just_j.test(c); // true
just_j.test(d); // false
just_j.test(e); // true
just_j.test(f); // false
var esc_j = escapedRE("j");
esc_j.test(a); // false
esc_j.test(b); // true
esc_j.test(c); // false
esc_j.test(d); // true
esc_j.test(e); // false
esc_j.test(f); // true
function nonescapedRE(match,flags) {
return new RegExp(`(?<!\\\\)(\\\\\\\\)*${match}`,flags);
}
function escapedRE(match,flags) {
return new RegExp(`(?<!\\\\)(\\\\)(\\\\\\\\)*${match}`,flags);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment