2016-10-28 19 views
0

どのようにしてパスワードを取得することができますか(バックスラッシュ、スラッシュ、一重引用符、二重引用符)、それ以外は許可しません。 preg_matchについて多くのアイデアがあるので、すべての提案は受け入れられます。preg_matchで文字列内の特定の特殊文字を許可する

私はそれを達成するために以下のコードを試しましたが、成功することはできません。

だから誰でもいくつかの提案/アイデアがありますか?

PHPコード:

public function check_password($str){ 
     return (!preg_match("/^[[email protected]#$%^&*()_-+|;:<>,.?]+$/i", $str)) ? FALSE : TRUE; 
    } 

私は(バックスラッシュ、スラッシュ、単一引用符、二重引用符)を除外置くならば、それは私が例えばデータベース

にパスワードを保存できるようにする必要があります。

Password : [email protected]#$%^&*()_-+| ;:<>, // true 
Password : /12345    //false 
Password : [email protected]#$%^&*()_-+| ;:<> //true(here white space also allowed) 
+0

あなたが主張している文字を正確にテストしたいだけです。 ''/[\\\/\ '"] /' 'のようなもので、そこに' a-z0-9'のようなものは必要ありません。それ以上のエキゾチックな文字がなくてもテストを満足させるからです – arkascha

+0

@ arkascha返信をありがとう –

+0

私は '/ [\\\/\' ']'/'を試していますが、その動作していないので、どうすれば実現できますか?( –

答えて

1

私が正しく理解している場合は、この文字のみを入力してください。逆スラッシュ、スラッシュ、一重引用符を使用すると、は無効になり、パスワードの検証はになります。したがってコードは次のとおりです。

public function check_password($str){ 
    return (preg_match('/^[^\\\"\'\/]+$/i', $str)); 
} 
+0

コード –

+0

のコメントのように思われます。コメントありがとうございます。一定。 – krasipenkov

+0

その偽の代わりにパスワード/ 12345を返します –

0

、このよう

public function check_password($str){ 
return (!preg_match('/^(?=.*\d)(?=.*[A-Za-z])[[email protected]#$%]{8,12}$/', $str)) ? FALSE : TRUE; 
} 
をお試しください
+0

!@#$%^&*()_- +とパスワードを保存する場合は、 ;:<>、trueの代わりにfalseをスローする –

+0

'!'演算子を使って削除してみてください。 –

関連する問題