PHPで文字列が全角カタカナであるかを正規表現でチェックする
文字列が全角カタカナであるかを正規表現でチェックするには「^[ァ-ヴー]+$」のパターンを使います。この正規表現は「1文字以上の全角カタカナの組み合わせで構成される文字列」という意味になり「パターン」や「ヴィーナス」など長音を含む全角カタカナの文字列にマッチします。
この正規表現は「一ヵ月」や「二ヶ国」など、地名や数の表現に使用する「ヵ」と「ヶ」にはマッチしません。これらをマッチさせるためには「^[ァ-ヶー]+$」のパターンを使用してください。
PHPではUnicodeのプロパティエスケープを用いて「^[\p{Katakana}ー]+$」のパターンも同様に「ヵ」と「ヶ」を含む全角カタカナにマッチします。
いずれのパターンもPHPで正しく動作させるためには、文字エンコーディングがUTF-8であることを示すパターン修飾子「u(PCRE_UTF8)」を指定し「/^[ァ-ヴー]+$/u」のように記述します。
基本的な全角カタカナチェックで利用できる正規表現のパターンは以下になります。
# | マッチさせたい条件 | 正規表現パターン |
---|---|---|
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 isFullWidthKatakanaInRange(string $str, int $n, int $m) {
return preg_match(sprintf('/^[ァ-ヴー]{%d,%d}$/u', $n, $m), $str);
}