PHPで文字列がひらがなであるかを正規表現でチェックする
はじめに
本記事では、PHPで文字列がひらがなであるかを正規表現でチェックする方法について解説します。
基本的なパターン
文字列が1文字以上のひらがなの組み合わせで構成される場合は、以下の正規表現パターンを使用できます。
踊り字、濁点、半濁点
「こゝろ」や「みすゞ」など、踊り字を含むひらがなにマッチさせたい場合は、以下のパターンを使用できます。
ただし、このパターンは濁点「゛」や半濁点「゜」にもマッチするため、注意が必要です。
Unicodeプロパティエスケープ
「ゕ」や「ゖ」、「ゔ」、「ゟ」などの特殊なひらがなを含める場合は、Unicodeプロパティエスケープを用いて以下のパターンを使用できます。
長音
「けーき」など長音を含むひらがなにマッチさせたい場合は、以下のパターンを使用できます。
その他組み合わせ
要件が基本的なパターンに加え長音と踊り文字、「ゕ」と「ゖ」、「ゔ」をひらがなとみなす場合は、以下のパターンを使用できます。
組み合わせによって半角スペースを含むひらがな「/^[ぁ-ん ]+$/u」や数字を含むひらがな「/^[ぁ-ん0-9]+$/u」など様々なパターンに対応できるので、要件にマッチした正規表現を検討してください。
補足
本記事では、UTF-8エンコーディングを前提としています。
使用する正規表現ライブラリによって、パターン修飾子の指定方法などが異なる場合があります。
詳細については、正規表現ライブラリのドキュメントを参照してください。
ひらがなチェックの基本的なパターンで、文字数を指定する正規表現は以下になります。
# | マッチさせたい条件 | 正規表現パターン |
---|---|---|
1 | すべてひらがなである | ^[ぁ-ん]+$ |
2 | n桁のひらがなである | ^[ぁ-ん]{n}$ |
3 | n桁以上のひらがなである | ^[ぁ-ん]{n,}$ |
4 | m桁以下のひらがなである | ^[ぁ-ん]{1,m}$ |
5 | n桁以上m桁以下のひらがなである | ^[ぁ-ん]{n,m}$ |
ソースコード
n桁以上m桁以下のひらがなであるかをチェックする
/**
* 文字列が指定した桁数範囲のひらがなかチェックします
* @param string $str 文字列
* @param int $n 最小桁数
* @param int $m 最大桁数
* @return bool 文字列が指定した桁数範囲のひらがなの場合はtrue、それ以外はfalse
*/
function isHiraganaInRange(string $str, int $n, int $m) {
return preg_match(sprintf('/^[ぁ-ん]{%d,%d}$/u', $n, $m), $str);
}