es6學習筆記(三)
阿新 • • 發佈:2018-12-12
es6學習筆記(三)
正則擴充套件
建構函式的變化
- es6中如果RegExp建構函式第一個引數是正則物件,那麼可以使用第二個引數指定修飾符。返回的正則表示式會忽略原有的正則表示式的修飾符,只是用新指定的修飾符。
new RegExp(/abc/ig, 'i').flags //"i"
正則方法的擴充套件
u修飾符
- 含義為“Unicode 模式”,用來正確處理四個位元組的 UTF-16 編碼
y修飾符
- y修飾符叫做黏連修飾符
- y修飾符的作用與g修飾符類似,也是全域性匹配,後一次匹配都從上一次匹配成功的下一個位置開始。不同之處在於,g修飾符只要剩餘位置中存在匹配就可,而y修飾符確保匹配必須從剩餘的第一個位置開始,這也就是“粘連”的涵義。
var s = 'aaa_aa_a'; var r1 = /a+/g; var r2 = /a+/y; //第一找到匹配值aaa,剩下值_aa_a r1.exec(s) // ["aaa"] r2.exec(s) // ["aaa"] //第二次匹配中由於_aa_a中不是以a開頭所以y修飾符找不到值返回null r1.exec(s) // ["aa"] r2.exec(s) // null
s修飾符
- 正則表示式中,點(.)是一個特殊字元,代表任意的單個字元,但是有兩個例外。一個是四個位元組的 UTF-16 字元,這個可以用u修飾符解決;另一個是行終止符。
- 所謂行終止符,就是該字元表示一行的終結。以下四個字元屬於”行終止符“。
- U+000A 換行符(\n)
- U+000D 回車符(\r)
- U+2028 行分隔符(line separator)
- U+2029 段分隔符(paragraph separator)
新增屬性
- RegExp.prototype.sticky ,與y修飾符相匹配,表示是否設定了y修飾符
var r = /hello\d/y; r.sticky // true
- RegExp.prototype.flags 屬性,返回正則表示式的修飾符
// ES5 的 source 屬性 // 返回正則表示式的正文 /abc/ig.source // "abc" // ES6 的 flags 屬性 // 返回正則表示式的修飾符 /abc/ig.flags // 'gi'
- RegExp.prototype.unicode 屬性
const r1 = /hello/; const r2 = /hello/u; r1.unicode // false r2.unicode // true