正则表达式-转义字符

发布于 2019-08-25  1 次阅读


//

在处理转义字符[ \ ^ $ . | ? * + ( )需要加\

alert( "Chapter 5.1".match(/\d\.\d/) ); // 5.1

new RegExp

let reg = new RegExp("\d\.\d");

alert( "Chapter 5.1".match(reg) ); // null

在字符串中的反斜杠表示转义或者类似 \n 这种只能在字符串中使用的特殊字符。这个引用会“消费”并且解释这些字符,比如说:

  • \n —— 变成一个换行字符,
  • \u1234 —— 变成包含该码位的 Unicode 字符,
  • 。。。其它有些并没有特殊的含义,就像 \d 或者 \z,碰到这种情况的话会把反斜杠移除。

所以调用 new RegExp 会获得一个没有反斜杠的字符串。

如果要修复这个问题,我们需要双斜杠,因为引用会把 \ 变为 \:

let regStr = "\\d\\.\\d";
alert(regStr); // \d\.\d (correct now)

let reg = new RegExp(regStr);

alert( "Chapter 5.1".match(reg) ); // 5.1


这个时间很美好,但它也很残酷