PHPで文字列が半角英数字記号であるかを正規表現でチェックする

文字列が半角英数字記号であるかを正規表現でチェックするには「^[ -~]+$」のパターンを使います。この正規表現は「1文字以上の半角英数字記号の組み合わせで構成される文字列」という意味になり「Hello, world!」などの文字列にマッチします。半角スペースを除外したい場合は「^[!-~]+$」とパターンを記述します。

また「^[ -~]{6}$」のパターンは6桁の半角英数字記号にマッチするのでクーポンコードなど固定長文字列の入力チェックに利用できます。パスワードなどで12桁以上20桁以下の半角英数字記号にマッチさせたい場合は「^[ -~]{12,20}$」とパターンを記述することができます。

基本的な半角英数字記号チェックで利用できる正規表現のパターンは以下になります。

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

ソースコード

すべて半角英数字記号であるかをチェックする

/**
 * 文字列が半角英数字記号かチェックします
 * @param string $str 文字列
 * @return bool 文字列が半角英数字記号の場合はtrue、それ以外はfalse
 */
function isHalfWidthAlphanumericSymbols(string $str) {
	return preg_match('/^[ -~]+$/', $str);
}

検証

引数の入力

isHalfWidthAlphanumericSymbols("
");

検証結果

n桁の半角英数字記号であるかをチェックする

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

検証

引数の入力

isHalfWidthAlphanumericSymbolsFixedLength("
",
);

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

検証結果

n桁以上の半角英数字記号であるかをチェックする

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

検証

引数の入力

isHalfWidthAlphanumericSymbolsMinLength("
",
);

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

検証結果

m桁以下の半角英数字記号であるかをチェックする

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

検証

引数の入力

isHalfWidthAlphanumericSymbolsMaxLength("
",
);

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

検証結果

n桁以上m桁以下の半角英数字記号であるかをチェックする

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

検証

引数の入力

isHalfWidthAlphanumericSymbolsInRange("
",
,
);

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

検証結果

Follow me!

photo by:Sigmund