可能重复:Javascript中是否有RegExp.escape函数?
我正在尝试根据用户输入构建一个javascript正则表达式:
function FindString(input) {
var reg = new RegExp('' + input + '');
// [snip] perform search
}
但是当用户输入包含 ?
或 *
时,正则表达式将无法正常工作,因为它们被解释为正则表达式特殊符号 . 实际上,如果用户在其字符串中放置了不 balancer 的 (
或 [
,则正则表达式甚至无效 .
什么是正确转义所有特殊字符以在正则表达式中使用的javascript函数?
1 回答
短暂的甜蜜
Example
Install
在npm上可用escape-string-regexp
Note
见MDN: Javascript Guide: Regular Expressions
其他符号(~`!@#...)可以没有后果地进行转义,但不是必须的 .
.
.
.
.
测试用例:典型的网址
长答案
如果你打算使用上面的函数,至少链接到你的代码文档中的这个堆栈溢出帖子,这样它看起来就像疯狂的难以测试的伏都教 .