關於中文字符匹配js正則表達式

廣泛使用的正則是[\u4e00-\u9fa5],但這個範圍並不完整。例如: 
/[\u4e00-\u9fa5]/.test( '⻏' ) // 測試部首⻏,返回false 
 
根據Unicode 5.0版編碼,要準確的判斷一箇中文字符要包括: 
範圍            含義                範圍               含義 
2E80-2EFF   CJK 部首補充    2F00-2FDF   康熙字典部首 
3000-303F   CJK 符號和標點   31C0-31EF   CJK 筆畫 
3200-32FF   封閉式 CJK 文字和月份   3300-33FF   CJK 兼容 
3400-4DBF   CJK 統一表意符號擴展 A  4DC0-4DFF   易經六十四卦符號 
4E00-9FBF   CJK 統一表意符號  F900-FAFF   CJK 兼容象形文字 
FE30-FE4F   CJK 兼容形式    FF00-FFEF   全角ASCII、全角標點 
 
所以,正確的匹配中文字符正則表達式爲: 
var rcjk = /[\u2E80-\u2EFF\u2F00-\u2FDF\u3000-\u303F\u31C0-\u31EF\u3200-\u32FF\u3300-\u33FF\u3400-\u4DBF\u4DC0-\u4DFF\u4E00-\u9FBF\uF900-\uFAFF\uFE30-\uFE4F\uFF00-\uFFEF]+/g; 
 
若是不但願匹配標點、符號,在正則中去掉對應的範圍便可: 
3000-303F   CJK 符號和標點   FF00-FFEF   全角ASCII、全角標點
相關文章
相關標籤/搜索