文字と数字は一致させたいが、数字だけではない。文字と数字または文字列のみを検証する方法は?
は、だから私はこのようにフィルタリングするpreg_match()
パターンを作成したい:
例:
no123
真123no
真123456
偽letters
真
文字と数字は一致させたいが、数字だけではない。文字と数字または文字列のみを検証する方法は?
は、だから私はこのようにフィルタリングするpreg_match()
パターンを作成したい:
例:
no123
真123no
真123456
偽letters
真これは試すことができますRegex。数字と文字の両方を少なくとも1つチェックします。あなたのコメントによると
(?=.*[0-9])(?=.*[a-zA-Z])([a-zA-Z0-9]+)$
: "唯一vaild文字だけ番号無効"、この仕事をするウィル:
if (preg_match('/^(?=.*[a-z])[a-z0-9]+$/i', $inputString)) {
// valid
} else {
// invalid
}
説明:
/ : regex delimiter
^ : start of string
(?=.*[a-z]) : lookahead, make sure we have at least one letter
[a-z0-9]+ : string contains only letters and numbers
$ : end of string
/i : regex delimiter + flag case insensitive
SKIPを使用します-FAILパターンはTotoのパターンを上回ります(MH2K9の答えはすべてのアルファベットの一致が許されないので間違っています)。デモリンクのサンプルテキストでパターンをテストできます。
/^\d+$(*SKIP)(*FAIL)|^[a-z\d]+$/i
これは純粋に数値文字列、およびマッチ混合(数値アルファベット)と純粋にアルファベットの文字列を "不適格"。
コード:(Demo)
$string='test123';
var_export(preg_match('/^\d+$(*SKIP)(*FAIL)|^[a-z\d]+$/i',$string)?true:false);
出力:
true
だから我々は、少なくとも1つの文字を持っている必要があります。その前に任意の桁数があり、文字列の終わりまで任意の英数字が許可されます。
/^\d*[a-z][a-z\d]*$/i
^
ストリング\d*
開始一文字[a-z\d]*
$
英数字の任意の量の数字[a-z]
i
フラグの終わりまでfまたは
に一致するケースレスは文字だけ有効かいませんか? – Toto
文字のみが有効ですが、数字は無効です。 –