中文字符匹配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、全角標點

或者charCodeAt()>255

 

原帖地址:http://my.oschina.net/u/1182602/blog/406435


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM