私が試してみました:
preg_match("/^[a-zA-Z0-9]", $value)
しかし、私は何か間違ったことをしていると思います。
このために正規表現を使用する必要はありません、PHPには組み込み関数ctype_alnum
これはあなたのためにこれを行い、より速く実行します:
<?php
$strings = array('AbCd1zyZ9', 'foo!#$bar');
foreach ($strings as $testcase) {
if (ctype_alnum($testcase)) {
echo "The string $testcase consists of all letters or digits.\n";
} else {
echo "The string $testcase does not consist of all letters or digits.\n";
}
}
?>
必然的に正規表現を使用したい場合、いくつかのオプションがあります。
まず:
preg_match('/^[\w]+$/', $string);
\w
には英数字以外の文字(アンダースコアを含む)が含まれますが、\d
。
代わりに:
/^[a-zA-Z\d]+$/
または単に:
/^[^\W_]+$/
/
(パターン区切り文字)および$
(終了文字列に一致)。
preg_match("/^[a-zA-Z0-9]+$/", $value)
とにかく失敗するはずですが、動作する可能性がある場合は、文字列の先頭の1桁だけに一致します。
/^[a-z0-9]+$/i
OPは文字と数字のみ(アンダースコアなし!)が欲しいと言ったので、これをphp regexで持つもう1つの方法は、posix式を使用することです:
/^[[:alnum:]]+$/
注:これは、Java、JavaScript、Python、Ruby、.NETでは機能しません