ES6字符串和正则表达式改动

时间:2021-10-11 20:42:51

1. ES6字符串变更

(1)includes() 方法,如果在字符串中检测到指定文本返回true,否则返回false

(2)startsWith()方法,如果在字符串的起始部分检测到文本,则返回true,否则返回false

(3)endsWith()方法,如果在字符串的结束部分检测到文本,则返回true,否则返回false

以上方法都接收两个参数,一个是要检测的文本,第二个参数是可选的,也即检索开始的位置,在第三个方法中,从字符串长度减去这个索引值的位置开始匹配

(4)repeat()方法,接收一个number类型参数,表示该字符串重复次数

"x".repeat(3)  // 'xxx'    " ".repeat(4)  // 4个空格 控制缩进

codePointAt(),String.fromCodePoint() ,normalize() 标准化 针对32位编码单元的方法

2. 正则表达式

(1) u修饰符  从编码单元模式切换为字符模式, 不会把32位编码单元(代理对)视为两个字符

(2) y修饰符  在字符串开始匹配字符时,通知搜索从正则表达式的lastIndex属性开始进行,如果在指定位置没能匹配成功,则停止匹配

只有调用exec() 和 text() 这些正则表达式对象的方法才会有lastIndex 属性,  调用字符串的方法(match) 不会触发粘滞行为

(3)正则表达式的复制

ES5中, var re1 = /ab/i,

      re2 = new RegExp(re1);

    re2是re1的一份拷贝

re2 = new RegExp(re1,'g');   // 在ES5中抛出错误,在ES6中正常运行

(4)flags 属性

ES5中可以通过source属性获取正则表达式的文本,ES6中新增flags属性来获取修饰符

let re = /ab/g;

re.source    // "ab"

re.flags      // "g"

getFlags(re)  // "g"