JavaScriptで漢字を判定する
文字のコードポイントが漢字の範囲内かどうかを見る。
/**
* 渡された文字が漢字であるか判定
* @param {string} char 調べたい文字 (1文字)
* @return {boolean} パラメータの文字が漢字ならtrue
*/
const isChineseCharacter = (char) => {
const code = char.codePointAt(0);
return (
(0x4e00 <= code && code <= 0x9fef) || // CJK統合漢字
(0x3400 <= code && code <= 0x4db5) || // CJK統合漢字拡張A
(0x20000 <= code && code <= 0x2a6d6) || // CJK統合漢字拡張B
(0x2a700 <= code && code <= 0x2b734) || // CJK統合漢字拡張C
(0x2b740 <= code && code <= 0x2b81d) || // CJK統合漢字拡張D
(0x2b820 <= code && code <= 0x2cea1) || // CJK統合漢字拡張E
(0x2ceb0 <= code && code <= 0x2ebe0) || // CJK統合漢字拡張F
(0xf900 <= code && code <= 0xfaff) || // CJK互換漢字
(0x2f800 <= code && code <= 0x2fa1f) || // CJK互換漢字補助
(0xe0100 <= code && code <= 0xe01ef) || // 異体字セレクタ補助
(0x2f00 <= code && code <= 0x2fdf) || // 康煕部首
(0x2e80 <= code && code <= 0x2eff) || // CJK部首補助
(0x31c0 <= code && code <= 0x31ef) // CJKの筆画
);
};
コードポイントのどこからどこまでが漢字であるかは、次のページを参考にしました。ここでは『CJK統合漢字』から『CJKの筆画』まで、全部積んでみました。