2016-10-28 5 views
0

Comment puis-je obtenir ce mot de passe ont (barre oblique inverse, barre oblique, guillemet simple, guillemets doubles) alors et seulement il ne permettra pas sinon il reviendra vrai en utilisant la validation personnalisée. N'avez pas beaucoup d'idée sur preg_match donc toutes les suggestions sont acceptables.preg_match pour autoriser des caractères spéciaux spécifiques dans la chaîne

J'ai essayé le code ci-dessous pour y parvenir mais je ne peux pas réussir.

Donc, quelqu'un a des suggestions/idée?

code php:

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

si je vais mettre exclure (barre oblique inverse, barre oblique, guillemets simples, doubles guillemets) il doit me permettre de stocker le mot de passe dans la base de données

Par exemple:

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

Vous ne voulez tester que les caractères sur lesquels vous insistez. Donc, quelque chose comme ''/ [\\\/\'"]/''. Vous ne voulez pas de choses comme' a-z0-9', car cela satisferait le test même sans caractères plus exotiques – arkascha

+0

@ arkascha Merci pour la réponse –

+0

alors comment puis-je obtenir cela parce que j'ai essayé avec '/ [\\\/\' "]/'mais son ne fonctionne pas :( –

Répondre

1

Si je comprends bien que vous voulez seulement ce caractère - barre oblique inverse, barre oblique, guillemet simple, guillemets doubles à désactivé pour votre validation de mot de passe. Voici donc le code:

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

semble comme problème de devis avec le code –

+0

Merci pour le commentaire. Fixé. – krasipenkov

+0

son retour vrai pour le mot de passe/12345 au lieu de faux –

0

Essayez comme ça,

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

si je vais stocker le mot de passe avec! @ # $%^& *() _- + | ;: <>, lance alors false au lieu de vrai –

+0

Supprimez et essayez avec l'opérateur '!'. –