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

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

このパターンを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 isHalfWidthKatakana(string $str) {
	return preg_match('/^[ヲ-゚]+$/u', $str);
}

検証

引数の入力

isHalfWidthKatakana("
");

検証結果

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

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

検証

引数の入力

isHalfWidthKatakanaFixedLength("
",
);

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

検証結果

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

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

検証

引数の入力

isHalfWidthKatakanaMinLength("
",
);

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

検証結果

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

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

検証

引数の入力

isHalfWidthKatakanaMaxLength("
",
);

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

検証結果

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

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

検証

引数の入力

isHalfWidthKatakanaInRange("
",
,
);

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

検証結果

Follow me!

photo by:Sigmund