js 正则表达式中一个\和二个的区别

ApiPost-宣博文 前端 2020-09-17

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用的是//包裹。也就是"^\\[”中的\\相当于二层转义。

那结论就有了。

\在引号中需要转义,所以在引号中使用特殊字符时需要二层转义,而//中\不需要,这就是区别 。

Apipost 私有化火热进行中

评论