RegExp构造函数
- ES5
RegExp
构造函数的参数有两种:var reg = new RegExp('xyz', 'i') 等价于 var reg = /xyz/i
var reg = new RegExp(/xyz/i)
返回一个原有正则表达式的拷贝 但是此时不允许再使用第二个参数添加修饰符 会报错
- ES6
- 如果RegExp构造函数第一个参数是一个正则对象 那么可以使用第二个参数指定修饰符 而且返回的正则表达式会忽略原有的正则表达式的修饰符 只使用新的指定的修饰符
new RegExp(/abc/ig, 'i').flags // 'i'
字符串的正则方法
- ES6使得一下四个方法在语言内部全部调用RegExp的实例方法,从而左到所有与正则相关的方法都定义在RegExp对象上。
match() / replace() / search() /split()
String.prototype.match 调用 RegExp.prototype[Symbol.match]
以此类推
u修饰符 u
- 识别点字符
.
- 识别大括号表示Unicode字符的表示法
/u{61}/
- 正确识别码点大于0xFFFF的Unicode字符
- 影响预定义模式能否正确识别码点大于Unicode字符
S
匹配所有不是空格的字符 - i修饰符 能否正确识别字符大小写
y修饰符 y
- 全局匹配 确保匹配必须从剩余的第一个位置开始
- y修饰符设计的本意就是让头部匹配的标识
^
在全局匹配中都有效 - y修饰符确保了匹配之间不会有漏掉的字符
sticky
属性:表示是否设置了y修饰符
笔记内容整理来自阮一峰老师的《ES6标准入门》