Javascript相当于Perl的\ Q ...\E或quotemeta()

zwo*_*wol 20 javascript regex quotemeta

在Perl正则表达式中,您可以使用\Q和包围子表达式,\E以指示您希望将子表达式匹配为文字字符串,即使其中存在元字符.您还可以使用quotemeta在字符串中插入正确数量的反斜杠的函数,这样,如果随后将该字符串插入到正则表达式中,则无论其内容是什么,它都将按字面匹配.

Javascript(在主流浏览器中部署)是否有任何内置的等价物?我可以自己写得很好,但我想知道我是否需要打扰.

Joe*_*lor 17

没有这样的内置功能.

我建议你研究互联网上可用的众多正则表达式转义函数,而不是实现自己的.

该页面提出了以下解决方案(由Colin Snover提供):

RegExp.escape = function(text) {
    return text.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&");
}
Run Code Online (Sandbox Code Playgroud)

或建议使用XRegExp库.

  • 谢谢.对于点击链接的任何人都要注意:一直读到底部的*正确*例程版本. (3认同)

Fra*_*isc 6

据我所知,Quotemeta本身并没有实现,但几个月前我就用这个:

function quotemeta (str) {
  // http://kevin.vanzonneveld.net
  // +   original by: Paulo Freitas
  // *     example 1: quotemeta(". + * ? ^ ( $ )");
  // *     returns 1: '\. \+ \* \? \^ \( \$ \)'
  return (str + '').replace(/([\.\\\+\*\?\[\^\]\$\(\)])/g, '\\$1');
}
Run Code Online (Sandbox Code Playgroud)

来自http://phpjs.org/functions/quotemeta:496