web-dev-qa-db-ja.com

Preg Match Trueの代わりにFalseをチェック

ユーザー名が文字と数字だけであることを確認するこのコードがありますが、コードを設定する方法として、preg_matchがfalseかどうかを確認するために必要です。現時点では、「安全な場合はこれをエコーする」と表示されています。「安全でない場合はこれを言う」と言うロジックが必要です。誰かが私を助けてくれますか?

if (preg_match('/[A-Z]+[a-z]+[0-9]+/', $username))
{
    echo 'Secure enough';
}
8
user2362601

次のように条件を無効にすることができます:

if (!preg_match('/^[A-Za-z0-9]+$/', $username))
{
    echo 'Secure enough';
}

また、全体として「英数字」(文字と数字のみ)を意味する場合、正規表現は[A-Za-z0-9]+である必要があります。

ユーザー名が1)大文字で始まる(または複数)2)後に1つ以上の小文字が続き、3)1つ以上の数字で終わる場合、コード内の正規表現は一致します。

編集:

これがあなたが望んでいるものかどうか私は本当にわかりません。基本的には次のことができます。

if (preg_match('/^[A-Za-z0-9]+$/', $username)) {
    echo 'Is only letters and numbers';
} else {
    echo 'Contains some other characters';
}

「十分に安全」になるように文字列に特殊文字が含まれていることを確認しますか?または、notに特殊文字が含まれていることを確認して、特定の時点で特殊文字の処理に問題が発生しないようにしますか?

安全なパスワードは特殊文字を含むパスワードであり、これを強制したくない場合もありますが(対象読者によっては)、通常はシステムでパスワードの特殊文字をサポートする必要があります。

27
tmh

それが!演算子はのため、ただ言う

if (!preg_match.....)

またはもちろん、これがelse句の目的です。どちらの方法でもこれは初歩的なプログラミングであり、そのような単純なことを尋ねる前に基本的なチュートリアルを読む必要があります。

3
TravisO