正規表示式 u 修飾符

admin發表於2018-08-12
u 修飾符標識能夠正確處理大於\uFFFF的Unicode字元。

也就是說,會正確處理四個位元組的UTF-16編碼。

此修飾符是 ES2015 新增,更多正規表示式新特性參閱ES2015 正規表示式新增特性一章節。

程式碼例項:

[JavaScript] 純文字檢視 複製程式碼
console.log(/^\uD842/u.test("\uD842\uDFB7"))

輸出false,由於"\uD842\uDFB7"是一個四個位元組的UTF-16編碼,代表一個字元,所以如果正規表示式帶有u修飾符,那麼就能夠識別它。

[JavaScript] 純文字檢視 複製程式碼執行程式碼
console.log(/^\uD842/.test("\uD842\uDFB7"))

輸出true;不加 u 修飾符,那麼無法將四個位元組的UTF-16編碼識別為一個字元,所以可以產生匹配。

[JavaScript] 純文字檢視 複製程式碼
/^.$/.test("\uD842\uDFB7")//false
/^.$/u.test("\uD842\uDFB7")//true

關於元字元點(.)的用法參閱正規表示式.號元字元一章節。

[JavaScript] 純文字檢視 複製程式碼
/^.$/.test("\uD842\uDFB7")//false
/^.$/u.test("\uD842\uDFB7")//true

新增u修飾符之後,點元字元就可以匹配碼點大於0xFFFF的Unicode字元。

[JavaScript] 純文字檢視 複製程式碼
/ \u{61} /.test("a")//false
/ \u{61} / u.test("a")//true

使用u修飾符,正規表示式能夠識別大括號{}表示的Unicode字元,否則無法識別,{61}也會被解讀為量詞,表示61個u字元。

關於大括號表示的Unicode字元可以參閱ES2015 字串新增特性一章節。

相關文章