JavaScript 正则表达式:转义字符串 "c++"?

JavaScript Regex: Escape the string "c++"?

我正在为输入文本字段编写一些正则表达式,但在转义“+”或“?”等特殊字符时遇到了一些问题。

我已经使用了 these two 问题,它们适用于 c+ 这样的字符串,但是如果我输入 c++ 我在控制台中收到以下错误 Invalid regular expression: /c++/: Nothing to repeat

代码如下:

$('input').keyup(function(){
   var val = $(this).val().trim().toLowerCase();
    // from: 
    //val.replace(/[-\/\^$*+?.()|[\]{}]/g, '\$&');

    //from: 
    val = val.replace(/[\-\[\]{}()*+?.,\\^$|#\s]/g, "\$&");

    var re = new RegExp(val, 'ig');
    console.log(re);
});

这是一个jsFiddle example of the issue

谢谢

您的代码中存在错误。由于字符串在 JavaScript 中是不可变的,replace 不会更改它,但 returns 会更改一个新字符串。您进行了替换,但没有获取返回值

改变

val.replace(/[\-\[\]{}()*+?.,\\^$|#\s]/g, "\$&");

val = val.replace(/[\-\[\]{}()*+?.,\\^$|#\s]/g, "\$&");

Demonstration

你的正则表达式很好,你只是丢弃了替换调用的结果。 替换为 val = val.replace(...);

工作fiddle