ひらがなの入力チェック

このページは、ひらがなの入力チェックについて検討するページです。

注意

  • 基本的に文字エンコーディングは Unicode (UTF-8) を想定しています。
  • 文中の「ひらがな」(括弧付きのひらがな) は、「プログラム上で定義するひらがな」を意味しています。
    (例えば「ー」はひらがなではありませんが、要件によっては「ひらがな」(プログラム上で定義するひらがな) に含める必要があるため、一般的なひらがなとは異なるという意味です)
  • 「含める」「含めない」などの判断はこのページを作ったひとの意見です。

「ひらがな」になり得る文字の候補

Unicode の Scripts.txt の定義

文字プロパティ \p{Hiragana}
3041..3096    ; Hiragana # Lo  [86] HIRAGANA LETTER SMALL A..HIRAGANA LETTER SMALL KE
309D..309E    ; Hiragana # Lm   [2] HIRAGANA ITERATION MARK..HIRAGANA VOICED ITERATION MARK
309F          ; Hiragana # Lo       HIRAGANA DIGRAPH YORI
1B001..1B11E  ; Hiragana # Lo [286] HIRAGANA LETTER ARCHAIC YE..HENTAIGANA LETTER N-MU-MO-2
1B150..1B152  ; Hiragana # Lo   [3] HIRAGANA LETTER SMALL WI..HIRAGANA LETTER SMALL WO
1F200         ; Hiragana # So       SQUARE HIRAGANA HOKA
「 」 (3000)
3000          ; Common # Zs       IDEOGRAPHIC SPACE
「ー」 (30FC)
30FC          ; Common # Lm       KATAKANA-HIRAGANA PROLONGED SOUND MARK
「゙」「゚」「゛」「゜」 (3099..309C)
3099..309A    ; Inherited # Mn   [2] COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK..COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
309B..309C    ; Common # Sk   [2] KATAKANA-HIRAGANA VOICED SOUND MARK..KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK

「ひらがな」にどの文字を含めるか

項目 含めるか
「ぁ」~「ん」 ○ 含める
「ゔ」「ゕ」「ゖ」 △ 状況による (基本含めていい)
「゙ 」「゚ 」「゛」「゜」 × 含めない
「ゝ」「ゞ」 △ 状況による
「々」 × 含めない
「ゟ」「🈀」 × 含めない
変体仮名、小書きゐ 小書きゑ 小書きを × 含めない
「 」 △ 状況による
「ー」 ○ 含める

※「状況による」は「システム要件などの状況による」の意味です。

「ゔ」「ゕ」「ゖ」

  • → 状況による (あってもなくても害が少ない)

「゙ 」「゚ 」「゛」「゜」

  • → 含めない
    • 通常の濁点付きひらがな (「が」など) だけ許可したほうがプログラム上扱いやすい

「ゝ」「ゞ」

  • → 状況による
    • 含めた場合あとで DB のかな検索などのときに困る
    • 法律上人名に使える踊り字 (ひらがな用の踊り字) なので、含めていないとユーザーが困る可能性がある
      (困る人はおそらく稀ではある。また、踊り字なので「ぁ」~「ん」内で入力はできる)

「々」

  • → 含めない
    • 例えば氏名のかな入力欄で「佐々木」を「さ々き」と入力されてデータ登録されてもあとで DB のかな検索などのときに困る
    • 「々」はひらがな用の踊り字ではない

「ゟ」「🈀」

  • → 含めない
    • 「ゟ」は「より」の合略仮名のためユーザーが「より」と入力すればいい (わざわざ使う理由がない)
    • 「🈀」もユーザーが「ほか」と入力すればいい (同上)

変体仮名、小書きゐ 小書きゑ 小書きを

  • → 含めない
    • 使用頻度、使用できない環境 (DB で登録できない、ブラウザで表示できない可能性がある) を踏まえると許容する理由が少ない

「 」

  • → 状況による
    • 例えば「やまだ たろう」(氏名のかな入力欄) などが入力エラー扱いになると困る等のときは含める

「ー」

  • → 含める
    • 例えば「あぱーと」(住所のかな入力欄) などが入力エラー扱いになると困る

チェック用の正規表現に何を採用するか

前述の「含める」「状況による」をすべて含める場合

  • 対象
    • 「ぁ」~「ん」
    • 「ゔ」「ゕ」「ゖ」
    • 「ゝ」「ゞ」
    • 「 」
    • 「ー」
JavaScript
/^[ぁ-ゖゝゞ -]*$/
JavaScript (コードポイント指定)
/^[\u3041-\u3096\u309D\u309E\u3000\u30FC]*$/
PHP
'/\A[ぁ-ゖゝゞ -]*\z$/u'
PHP (コードポイント指定)
'/\A[\x{3041}-\x{3096}\x{309D}\x{309E}\x{3000}\x{30FC}]*\z$/u'

※ 1文字以上必須の場合は *+

\p{Hiragana}

  • → 使わない
    • \p{Hiragana} に含まれる「ゟ」・変体仮名・「🈀」が不要
    • Unicode のバージョンによって含まれる文字が変動する可能性があるため開発側で制御しづらい

ぁ-ん

  • → 状況による
    • ぁ-ん に含まれない文字が本当に不要か判断する必要がある
      • 「ゔ」(3094)
      • 「ゕ」(3095)「ゖ」(3096)
      • 「ゝ」「ゞ」(309D..309E) など

ぁ-ゞ

  • → 使わない
    • ぁ-ゞ に含まれる「゙ 」「゚ 」「゛」「゜」(3099..309C) が不要 (必要な場合は使ってもいい)

参考