如何使用javascript转义正则表达式特殊字符?

IT技术 javascript regex
2021-01-16 02:27:51

我需要使用 java 脚本转义正则表达式特殊字符。我怎样才能做到这一点?应该感谢任何帮助。


感谢您的快速回复。但我需要转义正则表达式的所有特殊字符。我已经尝试过这段代码,但我无法达到结果。

RegExp.escape=function(str)
            {
                if (!arguments.callee.sRE) {
                    var specials = [
                        '/', '.', '*', '+', '?', '|',
                        '(', ')', '[', ']', '{', '}', '\\'
                    ];
                    arguments.callee.sRE = new RegExp(
                    '(\\' + specials.join('|\\') + ')', 'gim'
                );
                }
                return str.replace(arguments.callee.sRE, '\\$1');

            }

function regExpFind() {
            <%--var regex = new RegExp("\\[munees\\]","gim");--%>
                    var regex= new RegExp(RegExp.escape("[Munees]waran"));
                    <%--var regex=RegExp.escape`enter code here`("[Munees]waran");--%>
                    alert("Reg : "+regex);
                }

这段代码有什么问题?请指导我。

3个回答

使用\字符来转义在正则表达式中具有特殊含义的字符。

要自动化它,你可以使用这个:

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

更新:现在有一个标准化这个方法的提议,可能在 ES2016 中:https : //github.com/benjamingr/RegExp.escape

更新:上述提议已被拒绝,因此如果您需要,请继续自己实施。

',' 有什么特别之处?只是好奇。
2021-03-11 02:27:51
@Muneeswaran 这应该是公认的答案!
2021-03-23 02:27:51
@Viliam 我不知道确切的细节,但是 IIRC,需要转义以向后兼容一些旧的/有问题的 JavaScript 引擎。
2021-03-24 02:27:51
MDN文档也可以选择使用建议的功能(搜索功能escapeRegExp) string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')任何人都熟悉它的潜在缺点?
2021-04-05 02:27:51
当我没有逃避正斜杠时,我会收到正则表达式验证器的投诉,所以我将其添加到您最优秀的模式中 /[-[\]{}()*+?.,\\/^$|#\s]/g
2021-04-09 02:27:51

使用反斜杠转义字符。例如:

/\\d/

这将匹配 \d 而不是数字字符

@JeetendraAhuja - "$" 字符不是单词字符,因此 "\b(US\$)\b" 仅在以下字符是单词字符时才匹配。您可能正在寻找 "\b(US\$)\B" 来表示最后一个不是单词边界。
2021-03-28 02:27:51
如果使用变量 with RegExp,则\需要转义为\\,例如如果您想将(a)in替换(a)bc为空并获得bc,则可以写为var regex = new RegExp('\\\(a\\\)' ,"g"); str = str.replace(regex, '');
2021-04-01 02:27:51
双黑斜线对我有用,谢谢
2021-04-03 02:27:51
@Ben Rowe 你能建议一个像 US$ 这样的带有边界的词的正则表达式吗?我试过 "\b(US\$)\b" 但似乎效果不佳
2021-04-06 02:27:51

\你一起转义特殊字符

将特殊字符转义为文字,将文字字符转义为特殊字符。

例如:/\(s\)/匹配 '(s)' 而/(\s)/匹配任何空格并捕获匹配项。

来源:http : //www.javascriptkit.com/javatutors/redev2.shtml