企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
[TOC] ## RegExp构造函数 ES6允许RegExp构造函数接受正则表达式作为参数,返回原正则表达式的拷。如果使用第2个参数指定修饰符,返回的正则表达式会忽略原因的修饰符。 ``` var regex = new RegExp(/xyz/i) new RegExp(/abc/ig, 'i').flags // 'i' ``` ## 字符串的正则表达式 字符串对象有4个方法可以使用正则表达式:match\(\)、regplace\(\)、search()和splice\(\)。ES6将这4个方法在语音内部全部调用RegExp的实例方法,从而做到所有与正则相关的方法都定义在RegExp对象。 ## u修饰符 ES6对正则表达式添加了u修饰符,含义是Unicode模式,用来处理大于\uFFFF的Unicode字符。 ``` /^\uD83D/u.test('\uD83D\uDC2A') // false /^\uD83D/.test('\uD83D\uDC2A') // true ``` ## y修饰符 y修饰符的作用与g修饰符类似,也是全局匹配,不同之处是g修饰符只要剩余位置存在匹配就行,y修饰符会确保匹配必须从剩余的第一个开始。 ``` var s = 'aaa_aa_a' var r1 = /a+g/ var r2 = /a+i/ r1.exec(s) // ['aaa'] r2.exec(s) // ['aaa'] r1.exec(s) // ['aa'] r2.exec(s) // null ``` ``` var s = 'aaa_aa_a' var r = /a_i/ r.exec(s) // ['aaa_'] r.exec(s) // ['aa_'] ``` y修饰符统一遵守lastIndex属性,但必须在lastIndex指定的位置发现匹配。 ``` var reg = /a/y reg.lastIndex = 2 reg.exec('xaya') // null reg.lastIndex = 3 var match = reg.exec('xaxa') match.index // 3 match.lastIndex //4 ``` y修饰符隐含了头部匹配标志(^)。y修饰符的设计本意是让头部匹配的标识符在全局匹配中都有效。 ``` /b/y.exec('aba') // null ``` ## sticky属性 ES6新增sticky属性,表示是否设置了y修饰符。 ``` var r = /hello\d/y r.sticyk // true ``` ## flags属性 ES6位正则表达式新增了flags属性,返回正则表达式的修饰符。 ``` // ES5的source属性 // 返回正则表达式的正文 /abc/ig.source // 'abc' // ES6的flags属性 // 返回正则表达式的修饰符 /abc/ig.flags // 'gi' ```