字符串和正则表达式-《understanding ECMAScipt6》读书笔记2

ES6增加了对字符串和正则表达式更好的支持

更好的unicode支持

一些UTF-16编码的文字在ES5中出现一些问题

  • 识别为两个字节
  • 正则表达式匹配单个字符无法匹配上
  • charAt()方法无法识别
  • charCodeAt()方法无法返回正确结果

String.prototype.charPointAt()方法

charCodeAt()不同,该方法会在识别UTF-16编码的第一个字节会返回正确的结果。
but,第二个字节上与charCodeAt()结果并无不同。

String.prototype.formCodePoint()方法

会返回正确结果

String.prototype.normalize()方法

为了方便对不同编码的结果统一化,如æ与ae其实是等价的,但只有在normalize之后才会等价
1参,为"NFC"、"NFD"、"NFKC"、"NFKD"中一个,默认为'NFC';

正则表达式的u特符

  • 可以识别Unicode
    /^.$/u.test(ஷ)
  • 可以通过上面的例子变相的实现计算字符串的真实长度(不过效率低)

字符串其他的变化

ES5里面只增加了一个trim()方法,ES6则增加了很多

String.prototype.includes()方法

2参,第二参可选
1参为搜索的字符串
2参为搜索的起始位置

如果找到,返回true,没有则返回false

String.prototype.startsWith()方法

2参,第二参可选
1参为匹配的字符串
2参为搜索的起始位置

如果字符串是以匹配的字符串开头的,则返回true,否则则返回false;

String.prototype.endsWith()方法

2参,第二参可选
1参为匹配的字符串
2参为搜索的起始位置

如果字符串是以匹配的字符串结束的,则返回true,否则则返回false;

String.prototype.repeat()方法

1参
1参字符串重复的次数
参数不能为负数,如果为小数是,使用其整数部分
返回重复n次(n为参数)的字符串

正则表达式的其他变化

y特符

相当于对每次匹配的字符都加个^
则可通过 /我是测试/y.sticky 返回true或false判断有没有.

兼容

以下代码在ES5报错,ES6中不会

var re = /ab/i,
  re2 = new RegExp(re,'g')

g会替换掉i

flags属性

var re = /ab/i;
re.flags //i

模板字符串

特性

  • 支持多行字符串。要换行,在换行位置加上\n
  • 对字符串基本的格式化。 ${}神器
  • HTML 安全转义

你可能感兴趣的:(字符串和正则表达式-《understanding ECMAScipt6》读书笔记2)