参考にさせて頂いたページ
半角かどうかの判定について
半角カナかどうかの判定について
第一水準漢字と第二水準漢字について
JIS文字コード表について
http://charset.7jp.net/sjis.html
サンプルコード
const hankakuChars = []; let value = event.target.value; // 改行を削除 value = value.replace(/\r?\n/g, ''); for (let i = 0; i < value.length; i++) { // 1文字ずつ16進数文字コードに変換 const charCode = value.charCodeAt(i); // 半角文字に該当するか16進数で比較 const isHankaku = (charCode >= 0x0 && charCode < 0x81) || charCode === 0xf8f0 || (charCode >= 0xff61 && charCode < 0xffa0) || (charCode >= 0xf8f1 && charCode < 0xf8f4); if (isHankaku) { hankakuChars.push(value[i]); } } if (hankakuChars.length === 0) { console.log('半角文字はありません。'); } else { console.log(hankakuChars); }
おまけ
UnicodeとUTF-8 「文字集合(文字セット)と文字符号化方式」について
0xから始まる数について
0xから始まる数は16進数です。
半角カナかどうか判定する
半角カナかどうかは「Unicode 内のそれぞれの文字種の範囲 - みちのぶのねぐら 工作室 旧館」によると
半角カナなどは、 0xFF61 - 0xFF9F になります。
とのことです。
Unicode一覧 0000-0FFF - Wikipedia などで、 ヲ
を検索して確認するとよさそうです。
ヲァィゥェォャュョッーアイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワン゙゚
第一水準漢字と第二水準漢字かどうか判定する
[JavaScript] 全角文字のJIS第一水準、第二水準などをチェックしたい。あとencoding.js « きんくまデザイン によると、JavaScriptの場合は文字を列挙していくか、ライブラリ使うしかなさそうな感じです。
JIS文字コードと句と点について
JIS文字コード表: http://charset.7jp.net/sjis.html
句と点について: たとえば「&H889F」は、JISでは&Hは16進数であること、88の部分が点、9Fの部分が句を表しています。10進数で表現する場合は句、点はまた違います。