2014-05-05 2 views
0

Je viens de faire quelques modifications dans un fichier et lors du test, il semblait ne pas fonctionner, j'ai fait un peu de débogage et j'ai trouvé que preg_match renvoyait 0, je l'ai regardé et je ne vois pas quel est le problème, aussi que je ne l'ai pas touché cette partie du dossier, je suis confus quant à ce qui aurait pu arriver ...Problèmes avec la fonction preg_match

<?php 
echo preg_match('/[A-Z]+[a-z]+[0-9]+/', 'testeR123'); 
?> 

C'est un extrait que je utilise pour le débogage, je Je suppose que mon schéma est faux, mais je me trompe probablement à ce sujet.

Merci, P110

+0

http://regex101.com/r/zH4tA5 –

+0

Qu'attendez-vous de cette preg_match? Quel est le motif que vous voulez faire correspondre? –

+0

Cela devrait correspondre à Tester123 puisque votre expression régulière recherche une lettre majuscule en premier –

Répondre

0

Selon votre commentaire:

Je cherche juste à vérifier s'il y a une majuscule, minuscule et un certain nombre, mais des réponses, mes chèques de motif pour cela dans un ordre

ont un essai avec:

preg_match('/^(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])[A-Za-z0-9]+$/', $input_string); 

(?=.*[A-Z]) chèques il y a au moins une majuscule
(?=.*[a-z]) chèques il y a au moins un minuscule
(?=.*[0-9]) chèques il y a au moins un chiffre
[A-Za-z0-9]+ chèques il n'y a que ces caractères.

(?=...) est appelé lookahead.

+0

Je vais essayer ça bientôt, si ça fait ce que je cherche mal à marquer ça comme réponse – P110

+0

Merci! Cela fonctionne parfaitement! – P110

+0

@ P110: De rien. – Toto

0

Votre premier test regex s'il y a des lettres majuscules de A à Z puis s'il y a des lettres minuscules d'au z et puis s'il y a des chiffres. puisque votre chaîne commence par une minuscule, elle ne correspondra pas.

je pense que vous voulez faire

[A-Za-z0-9]+ 

Ou si vous avez besoin que votre chaîne commence par une chaîne de lowecase alors une chaîne en majuscules et chiffres que vous devez modifier le regex.

[a-z]+[A-Z]+[0-9]+ 

De cette façon, votre chaîne actuelle s'adapterait également à l'expression rationnelle.

0

Le problème est l'ordre des lettres: Essayez ceci:

echo preg_match('/[a-z]+[A-Z]+[0-9]+/', 'testeR123');

Ou:

echo preg_match('/[A-Z]+[a-z]+[0-9]+/', 'Rtest123');

Ou plus simple

echo preg_match('/[A-Z]+[0-9]+/i', 'testeR123');

0
<?php 
preg_match('/([A-Za-z0-9]+)/', 'testeR123', $match); 
echo $match[1]; 
?> 
+0

Merci, ça a marché mais quand j'ai essayé de l'implémenter c'est devenu marrant mais j'ai trouvé une réponse donc merci quand même – P110