12

パスワードを検証する関数を作成したいのpreg_matchですが、次の特殊文字を使用できるようにするための記述方法がわかりません: !@#$%.

if(!preg_match(?????)$/', $password))

正規表現に組み込みたいパスワード ルールは次のとおりです。

  • 文字と数字を含めることができます
  • 少なくとも 1 つの数字と 1 つの文字を含める必要があります
  • 次の文字のいずれかを含めることができます。!@#$%
  • 8~12文字である必要があります

ご協力いただきありがとうございます。

4

9 に答える 9

60

これは次のように見えるはずだと思います:

if(!preg_match('/^(?=.*\d)(?=.*[A-Za-z])[0-9A-Za-z!@#$%]{8,12}$/', $password)) {
    echo 'the password does not meet the requirements!';
}

文字列のstart ->^
と end ->$
の間には、少なくとも 1 つの数字 ->(?=.*\d)
と少なくとも 1 つの文字 ->(?=.*[A-Za-z])
があり、数字、文字、または次のいずれかである必要があります: !@#$% - > [0-9A-Za-z!@#$%]
8 ~ 12 文字にする必要があります ->{8,12}

user557846 があなたの質問にコメントしたように、より多くの文字を許可することもお勧めします。通常、(最大値を使用する場合) 少なくとも 50 文字を使用します:)

ところで、この正規表現チュートリアルをご覧になることをお勧めします

于 2012-08-08T22:48:39.837 に答える
12
preg_match('/^(?=.*\d)(?=.*[@#\-_$%^&+=§!\?])(?=.*[a-z])(?=.*[A-Z])[0-9A-Za-z@#\-_$%^&+=§!\?]{8,20}$/',$password)
  • 少なくとも 1 つの小文字
  • 少なくとも 1 つの大文字
  • 少なくとも 1 桁
  • @#-_$%^&+=§!? の少なくとも 1 つの特殊記号
于 2014-11-13T09:06:25.070 に答える
1
if (!preg_match('/^(?=.*\d)(?=.*[A-Za-z])(?=.*[!@#$%])[0-9A-Za-z!@#$%]
{6,15}$/',($_POST['password']))) {
    $message='Password must contain 6 characters of letters, numbers and 
    at least one special character.';
}
于 2017-01-11T07:16:39.687 に答える
0

ここでは、drupal カスタム フォームでこれを行いましhook_form_validateた。パスワードは、6 文字の文字、数字、および少なくとも 1 つの特殊文字である必要があります。

<?
if (!preg_match('/^(?=.*\d)(?=.*[A-Za-z])(?=.*[!@#$%])[0-9A-Za-z!@#$%]{6,15}$/', $form_state['values']['pass'])) {
    form_set_error('pass', t('Password must contain 6 characters of letters, numbers and at least one special character.'));
}
?>
于 2015-10-15T09:23:39.917 に答える
-1
if(!preg_match('/^(?=.*\d)(?=.*[A-Za-z])[0-9A-Za-z!@#$%]{8,12}$/', $password)) {
    echo 'the password does not meet the requirements!';
    }

上記のステートメントでは、どのようなパスワードが存在する可能性がありますか?

于 2014-03-17T05:55:56.893 に答える
-1

正規表現の基本機能である文字クラスを検索します。

于 2012-08-08T22:16:57.007 に答える