关于使用带字符串的regexp构造函数进行正则表达式时双重转义字符

时间:2014-05-14 13:06:12

标签: javascript regex string escaping

在Javascript中,我想匹配一个类似于:

的字符串模式
\left((some expression here to be matched)\right)

这比这复杂一点,所以我必须使用RegExp构造函数来定义我的模式。简化版本是:

var pattern_string = '\\left\\((' + EXPRESSIONpattern + ')\\\\right\\)' ;
var pattern_regexp = new RegExp(pattern_string, 'g');

我意识到\r是字符串中的回车符,因此在r之前的pattern_string中有四个反斜杠。在实现之后,我能够让它工作的唯一方法是将\l视为特殊字符串字符并使用:

var pattern_string = '\\\\left\\((' + EXPRESSIONpattern + '\\\\right\\)' ;
var pattern_regexp = new RegExp(pattern_string, 'g');

为什么我需要双倍逃避l?我找不到一个引用,说\l是一个特殊的字符串序列。 \l在字符串中的含义是什么?有人可以指向我的参考,其中包含需要在字符串中双重转义的所有字符吗?这将有助于调试,以确定何时需要双重逃避。

先谢谢你的帮助, Ť

0 个答案:

没有答案