2012-04-11 14 views
1

フィールドにパスワードを挿入できる正規表現が必要です。 しかし、唯一許される正規表現は[A-Za-z0-9] okですが、 "space"、 "。"、 "_"、 " - "です。 私はリストに記載されている特殊文字を許可できますが、ユーザーはそれを使用できません。 一方、他のすべての特殊文字は許可しないでください。Regex in php about passwordフィールド

それは可能ですか?このコードでは

私はパスワードの品質をチェックしますが、十分ではない私の目標の原因のために、私は特別な文字を管理することはできません。

  else if ($check_strength && (!preg_match("/[0-9]/", $newpwd) || !preg_match("/[^A-Za-z0-9]/", $newpwd))) { 
      $rcmail->output->command('display_message', $this->gettext('passwordweak'), 'error'); 
     } 

私はこの1つで私の問題を解決しました:

"/^[A-Za-z0-9\.\-\_]+$/" 
+0

あなたは既に[文字クラス](http://www.regular-expressions.info/charclass.html)がどのように動作するか知っていますか?そこに追加の文字を追加するだけです。 – mario

+1

また、パスワードを拘束する必要はありません。許可されるユーザー名は制限できますが、パスワードはあなたのビジネスではありません。ユーザビリティを向上させるものではなく、セキュリティを保証するものではありません。 – mario

+0

それは私のための簡単な解決策です: "/^[A-Za-z0-9\.\-\_]+$/" – user840718

答えて

0
echo preg_match("/^[A-Za-z0-9 ._-]+$/", '-a. s_d'); // 1 

以上の省略:

echo preg_match("/^[\w .-]+$/", '-a. s_d'); // 1 
+0

これは私のために働いた。 スペースについて私に説明してもらえますか? 略語版はどこですか? – user840718

+0

は '\ w'の後で、' .'の前に – webbiedave

1

私が正しく理解していれば、この正規表現はどうなること:

/^[a-zA-Z \._\-]+$/ 
0

あなたは正規表現を持つユーザのパスワードを「確認する」べきではありません。メトリックを使用して強度をチェックし、「十分に強力」と判断されることをお勧めします(たとえば、メトリックlook at this siteなど)。

このようにして、ユーザーはパスワードに任意の文字を含めることができます。ユーザーが自分のパスワードでどの文字を選択するかは本当に気にする必要はなく、とにかくそれをハッシュするので、あなたには影響しません。ここで言っ


は、あなたの正規表現です:

[\w .-]+