Is there a RegExp.escape function in Javascript?
No, JavaScript does not provide a built-in function called RegExp.escape
(or similar) in its standard library. However, you can easily implement your own function to escape special regex characters within a string.
1. Why You Need escape()
When building a dynamic regex pattern (e.g., from user input or variable data), you often want to treat special regex metacharacters (like *
, +
, ?
, .
) as literal characters. For instance, if a user searches for .
(dot), you don’t want it to match “any character”; you want it to match a literal dot.
2. How to Implement Your Own escapeRegex
Function
Below is a commonly used approach, which replaces every special regex character with a backslash-prefixed version.
function escapeRegex(str) { return str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); }
Explanation
- The character class
[.*+?^${}()|[\]\\]
includes the usual suspects that need escaping in most JavaScript regex engines:.
*
+
?
^
$
{
}
(
)
|
[
]
\
\\$&
is a backreference telling the replacement to insert a backslash plus the entire matched character. Essentially, it becomes\$&
at runtime, adding the needed backslash before the special character.
Usage Example
const userInput = '.+?*'; const safePattern = escapeRegex(userInput); const regex = new RegExp(safePattern, 'g'); // Now this will literally match ".+?*", not "any char" or "one or more" etc.
3. Is There a Plan to Add RegExp.escape
to the Language?
There have been various TC39 proposals and discussions over the years to introduce something like RegExp.escape
or String.prototype.escapeRegExp
, but so far no built-in method has been added to the official JavaScript standard. Until that happens (if ever), the custom utility function above remains the recommended approach.
4. Final Thoughts & Best Practices
- Always Escape if building a regex from dynamic sources, such as user input or variables, to avoid unexpected behavior or potential vulnerabilities.
- Cache or Reuse** your
escapeRegex
function if you call it frequently. - Stay Informed: Keep an eye on the ECMAScript proposals; if
RegExp.escape
or a similar solution becomes standardized, you can then rely on built-in support.
Bonus: Level Up Your JavaScript & Interview Skills
If you’re interested in mastering JavaScript (including advanced regex usage) or preparing for coding interviews, these DesignGurus.io resources can help:
-
Grokking JavaScript Fundamentals
Dive deeper into closures, prototypes, async/await, and more—key for debugging complex regex tasks. -
Grokking the Coding Interview: Patterns for Coding Questions
Learn systematic approaches to coding problems, crucial for interviews and day-to-day engineering.
For live feedback from ex-FAANG engineers, explore their Mock Interview services:
Finally, check out the DesignGurus.io YouTube channel for free tutorials on system design, coding patterns, and more.
Summary: There is no built-in RegExp.escape
in JavaScript. Instead, use a custom function like:
function escapeRegex(str) { return str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); }
to safely escape special regex characters.