PHPで文字列が半角英数字記号であるかを正規表現でチェックする
文字列が半角英数字記号であるかを正規表現でチェックするには「^[ -~]+$」のパターンを使います。この正規表現は「1文字以上の半角英数字記号の組み合わせで構成される文字列」という意味になり「Hello, world!」などの文字列にマッチします。半角スペースを除外したい場合は「^[!-~]+$」とパターンを記述します。
また「^[ -~]{6}$」のパターンは6桁の半角英数字記号にマッチするのでクーポンコードなど固定長文字列の入力チェックに利用できます。パスワードなどで12桁以上20桁以下の半角英数字記号にマッチさせたい場合は「^[ -~]{12,20}$」とパターンを記述することができます。
基本的な半角英数字記号チェックで利用できる正規表現のパターンは以下になります。
# | マッチさせたい条件 | 正規表現パターン |
---|---|---|
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 isHalfWidthAlphanumericSymbolsInRange(string $str, int $n, int $m) {
return preg_match(sprintf('/^[ -~]{%d,%d}$/', $n, $m), $str);
}