PHPで文字列が全角カタカナであるかを正規表現でチェックする

文字列が全角カタカナであるかを正規表現でチェックするには「^[ァ-ヴー]+$」のパターンを使います。この正規表現は「1文字以上の全角カタカナの組み合わせで構成される文字列」という意味になり「パターン」や「ヴィーナス」など長音を含む全角カタカナの文字列にマッチします。

この正規表現は「一ヵ月」や「二ヶ国」など、地名や数の表現に使用する「ヵ」と「ヶ」にはマッチしません。これらをマッチさせるためには「^[ァ-ヶー]+$」のパターンを使用してください。

PHPではUnicodeのプロパティエスケープを用いて「^[\p{Katakana}ー]+$」のパターンも同様に「ヵ」と「ヶ」を含む全角カタカナにマッチします。

いずれのパターンもPHPで正しく動作させるためには、文字エンコーディングがUTF-8であることを示すパターン修飾子「u(PCRE_UTF8)」を指定し「/^[ァ-ヴー]+$/u」のように記述します。

基本的な全角カタカナチェックで利用できる正規表現のパターンは以下になります。

#マッチさせたい条件正規表現パターン
1すべて全角カタカナである^[ァ-ヴー]+$
2n桁の全角カタカナである^[ァ-ヴー]{n}$
3n桁以上の全角カタカナである^[ァ-ヴー]{n,}$
4m桁以下の全角カタカナである^[ァ-ヴー]{1,m}$
5n桁以上m桁以下の全角カタカナである^[ァ-ヴー]{n,m}$
全角カタカナのチェックで利用できる正規表現パターン

ソースコード

すべて全角カタカナであるかをチェックする

/**
 * 文字列が全角カタカナかチェックします
 * @param string $str 文字列
 * @return bool 文字列が全角カタカナの場合はtrue、それ以外はfalse
 */
function isFullWidthKatakana(string $str) {
	return preg_match('/^[ァ-ヴー]+$/u', $str);
}

検証

引数の入力

isFullWidthKatakana("
");

検証結果

n桁の全角カタカナであるかをチェックする

/**
 * 文字列が指定した桁数の全角カタカナかチェックします
 * @param string $str 文字列
 * @param int $n 桁数
 * @return bool 文字列が指定した桁数の全角カタカナの場合はtrue、それ以外はfalse
 */
function isFullWidthKatakanaFixedLength(string $str, int $n) {
	return preg_match(sprintf('/^[ァ-ヴー]{%d}$/u', $n), $str);
}

検証

引数の入力

isFullWidthKatakanaFixedLength("
",
);

長さは桁数で入力してください。

検証結果

n桁以上の全角カタカナであるかをチェックする

/**
 * 文字列が最小桁数以上の全角カタカナかチェックします
 * @param string $str 文字列
 * @param int $n 最小桁数
 * @return bool 文字列が最小桁数以上の全角カタカナの場合はtrue、それ以外はfalse
 */
function isFullWidthKatakanaMinLength(string $str, int $n) {
	return preg_match(sprintf('/^[ァ-ヴー]{%d,}$/u', $n), $str);
}

検証

引数の入力

isFullWidthKatakanaMinLength("
",
);

長さは桁数で入力してください。

検証結果

m桁以下の全角カタカナであるかをチェックする

/**
 * 文字列が最大桁数以下の全角カタカナかチェックします
 * @param string $str 文字列
 * @param int $m 最大桁数
 * @return bool 文字列が最大桁数以下の全角カタカナの場合はtrue、それ以外はfalse
 */
function isFullWidthKatakanaMaxLength(string $str, int $m) {
	return preg_match(sprintf('/^[ァ-ヴー]{1,%d}$/u', $m), $str);
}

検証

引数の入力

isFullWidthKatakanaMaxLength("
",
);

長さは桁数で入力してください。

検証結果

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);
}

検証

引数の入力

isFullWidthKatakanaInRange("
",
,
);

長さは桁数で入力してください。

検証結果

Follow me!

photo by:Sigmund