漢字、句読点、記号にマッチする正規表現

正規表現のサンプルの中で「漢字」にマッチする正規表現について解説します。また句読点は漢字には含まれないため「句読点」や「記号」とマッチする正規表現についても併せて解説します。

(Last modified: )

「漢字」にマッチする正規表現

「漢字」とマッチするパターンの中で Unicode のコードの範囲を使用する方法をご紹介します。日本語(および中国語や韓国語)で使用される主な漢字は CJK 統合漢字と呼ばれるものにまとめられており、 Unicode のコードの範囲で次のように指定することができます。

\u4E00 から \u9FFF

参考「CJK統合漢字 - Wikipedia

CJK 統合漢字に含まれていない漢字については、 CJK Unified Ideographs Extension A から G にて追加されています。また CJK 互換漢字 というものもあります。必要であればこれらで使用している Unicode のコードの範囲も追加されてください。

CJK Unified Ideographs Extension A  \u3400 - \u4DFF
CJK Unified Ideographs Extension B  \u20000 - \u2A6DD
CJK Unified Ideographs Extension C  \u2A700 - \u2B734
CJK Unified Ideographs Extension D  \u2B740 - \u2B81F
CJK Unified Ideographs Extension E  \u2B820 - \u2CEAF
CJK Unified Ideographs Extension F  \u2CEB0 - \u2EBE0
CJK Unified Ideographs Extension G  \u2CEB0 - \u2EBE0
CJK 互換漢字 \uF900~\uFAFF

漢字だけで構成される文字列にマッチする正規表現は次のようになります。

^[\u4E00-\u9FFF]+$

また CJK 統合漢字に含まれない漢字の中で比較的よく使用される 3 つの文字についてはこのあとで解説する句読点・記号の中に含まれます。

\u3005 々  // 同上記号・同の字点
\u3006 〆  // 締め
\u3007 〇  // 漢数字のゼロ

漢字+上記の3つを追加した文字だけで構成される文字列にマッチする正規表現は次のようになります。

^[\u4E00-\u9FFF\u3005-\u3007]+$

サンプル

JavaScript を使って簡単な正規表現のサンプルを作成してみます。

const regex1 = /^[\u4E00-\u9FFF]+$/;

regex1.test('東京都千代田区');
--> true
regex1.test('快晴の一日');
--> false  // 範囲外の文字
regex1.test('虎視眈々');
--> false  // 範囲外の文字

const regex2 = /^[\u4E00-\u9FFF\u3005-\u3007]+$/;

regex2.test('虎視眈々');
--> true

「漢字」にマッチする正規表現(1)

「句読点」と「記号」にマッチする正規表現

句読点の '。' や '、' は漢字には含まれません。句読点や記号は Unicode のコードの範囲で次のように指定することができます。

\u3000 から \u303F

参考「CJKの記号及び句読点 - Wikipedia

上記の範囲には、先ほど漢字のところで例として表示した '々' 、 '〆' 、 '〇' の他に '?' (くの字点) や '?' (二の字点) などが含まれます。

句読点や記号だけで構成される文字列にマッチする正規表現は次のようになります。

^[\u3000-\u303F]+$

サンプル

JavaScript を使って簡単な正規表現のサンプルを作成してみます。

// ひらがな+句読点・記号
const regex = /^[\u3000-\u303F\u3040-\u309F]+$/;

regex.test('はい、だいじょうぶです。');
--> true
regex.test('「ありがとう」');
--> true

「句読点」と「記号」にマッチする正規表現(1)

-- --

正規表現のサンプルの中で「漢字」「句読点・記号」にマッチする正規表現について解説しました。

( Written by Tatsuo Ikura )

プロフィール画像

著者 / TATSUO IKURA

これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。