こうこく
作 ▸
改 ▸

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の筆画』まで、全部積んでみました。

Unicode(東アジア) - CyberLibrarian

この記事に何かあればこちらまで (非公開)