js 正则表达式中有时候需要用\来转义,有时候需要用\\来转义,那么什么时候该用\什么时候该用\\呢。Code up:
let regExp1 = new RegExp("^\\[");
let regExp2=/^\[/;
regExp1 .test("[123") //true
regExp2 .test("[123") //true
那么问题来了。为什么regExp1和regExp2一个用了\一个用了\\都能验证开头符号为[的字符串呢?
我们改下代码看看结果。
//相比上面的代码少了一个\ 让我们看看结果如何
let regExp1 = new RegExp("^\[");
regExp1 .test("[123") //运行后报错
报错信息:Uncaught SyntaxError: Invalid regular expression: /^[/: Unterminated character class
at new RegExp (<anonymous>)
at <anonymous>:1:15
那为何regExp2只需要加一个\呢。
仔细观察的人可能已经发现了。regExp1是用的""包裹。regExp1用的是//包裹。也就是"^\\[”中的\\相当于二层转义。
那结论就有了。
\在引号中需要转义,所以在引号中使用特殊字符时需要二层转义,而//中\不需要,这就是区别 。