根据用户输入动态构建RegEx

时间:2018-09-15 13:32:50

标签: javascript regex

我试图让用户输入将其与字符串变量匹配,当我将文字字符串传递给new RegExp(/\bjavascript/)时,它可以工作,但是我尝试了new RegExp('\b' + this.input)new RegExp('/\b' + this.input + '/');时失败了。 / p>

这是代码

 var lang = 'javascript'
 let patern =  new RegExp('/\b' + this.input + '/');
 console.log(patern.test('lang'));

其中“ input”是在我的课堂中声明的

2 个答案:

答案 0 :(得分:1)

从开头和结尾删除斜杠并转义反斜杠:

this.input = "St";

let pattern =  new RegExp('\\b' + this.input, 'i');

console.log(
  "Stack Overflow".match(pattern)
)

答案 1 :(得分:0)

当输入来自用户时,最好使用以下命令对字符串进行转义:

RegExp.escape = function (s)
{
    return s.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&');
};

您这样称呼它:

 let patern =  new RegExp('\\b' + RegExp.escape(this.input));

这样,即使输入中包含特殊字符(例如'\'或括号),它也可以正常工作