正則表達式u修飾符:
此修飾符標識能夠正確處理大于\uFFFF的Unicode字符。
也就是說,會正確處理四個字節的UTF-16編碼。
此修飾符是ES2015新增,更多正則表達式新特性可以參閱ES2015 正則表達式新增特性一章節。
更多正則表達式教程可以參閱正則表達式教程板塊。
代碼實例:
console.log(/^\uD842/u.test("\uD842\uDFB7"))
輸出false,由于"\uD842\uDFB7"是一個四個字節的UTF-16編碼,代表一個字符,所以如果正則表達式帶有u修飾符,那么就能夠識別它。
console.log(/^\uD842/.test("\uD842\uDFB7"))
輸出true;不加u修飾符,那么就無法將四個字節的UTF-16編碼識別為一個字符,所以就可以產生匹配。
/^.$/.test("\uD842\uDFB7")//false
/^.$/u.test("\uD842\uDFB7")//true
關于元字符點(.)的用法可以參閱正則表達式.號元字符一章節。
/^.$/.test("\uD842\uDFB7")//false
/^.$/u.test("\uD842\uDFB7")//true
添加u修飾符之后,點元字符就可以匹配碼點大于0xFFFF的Unicode字符。
/ \u{61} /.test("a")//false
/ \u{61} / u.test("a")//true
使用u修飾符,正則表達式能夠識別大括號{}表示的Unicode字符,否則無法識別,{61}也會被解讀為量詞,表示61個u字符。
關于大括號表示的Unicode字符可以參閱ES2015 字符串新增特性一章節。