鍍金池/ 問答/HTML/ /^[\Α-\¥]+$/ 這個正則為什么可以驗證中文?

/^[\Α-\¥]+$/ 這個正則為什么可以驗證中文?

百度找不到A和¥這兩個符號的含義,求解答

回答
編輯回答
情殺

[]表示字符集,表示取該集合里面的任意一個字符,[\A-\¥]里面的-表示范圍,取的是-兩邊字符的Unicode值,可以通過charCodeAt獲取字符的Unicode值,如下:

"A".charCodeAt(0) // 65
"¥"chartCodeAt(0) // 65509

所以字符的取值范圍是Unicode值為65-65509之間的任意字符,用十六進制表示為0041-FFE5。
大部分的中文其實都是在這個范圍之內(nèi)的,百科鏈接

  • CJK Compatibility (3300–33FF)

  • CJK Compatibility Forms (FE30–FE4F)

  • CJK Compatibility Ideographs (F900–FAFF)

所以可以用上面的正則匹配中文,當(dāng)然這個正則的匹配范圍和中文的匹配范圍并不是完全對應(yīng)的,因為該正則的范圍比常見中文的范圍要大,大小寫字母也是包含其中的。另外,還有一些中文如CJK Compatibility Ideographs Supplement (2F800–2FA1F)則不在該正則范圍之內(nèi),所以這個就需要你自己去權(quán)衡正則要精確匹配到什么程度。

2017年2月26日 03:39