Précédent   Forum des professionnels en informatique > PHP > Langage > Regex
Regex Forum d'entraide sur les expressions rationnelles PHP. Avant de poster -> FAQ regex, Cours de regex et Sources de regex
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 23/05/2011, 17h51   #1
Invité régulier
 
Homme
Développeur Web
Inscription : mai 2011
Messages : 7
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : Biens de consommation

Informations forums :
Inscription : mai 2011
Messages : 7
Points : 5
Points : 5
Par défaut 8 caractères dont un chiffre

Bonjour,

je cherche une regex qui me dirait si un mot est composé de 8 caractères alphanumérique minimum dont au moins un est un chiffre.

J'ai beau chercher, j'y arrive pas...

Merci d'avance
Spartacusply est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/05/2011, 18h03   #2
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 466
Points : 8 466
tu le fais en 2 expressions
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/05/2011, 10h26   #3
Modérateur
 
Avatar de Bisûnûrs
 
Josselin
Développeur Web
Inscription : janvier 2004
Messages : 9 050
Détails du profil
Informations personnelles :
Nom : Josselin
Âge : 29
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : janvier 2004
Messages : 9 050
Points : 12 181
Points : 12 181
Ou simplement :

Code :
if ( strlen( $chaine ) >= 8 && preg_match( '#[0-9]#', $chaine ) ) {}
Bisûnûrs est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 24/05/2011, 10h51   #4
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 466
Points : 8 466
ça ne vérifie pas dutout les conditions la,
je fais : 1 ou alors $$$$$$$8 et ça marche,
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/05/2011, 10h54   #5
Modérateur
 
Avatar de Bisûnûrs
 
Josselin
Développeur Web
Inscription : janvier 2004
Messages : 9 050
Détails du profil
Informations personnelles :
Nom : Josselin
Âge : 29
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : janvier 2004
Messages : 9 050
Points : 12 181
Points : 12 181
Ok, j'ai zappé le mot "alphanumérique", mais je ne suis pas d'accord pour le 1 seul.
Bisûnûrs est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/05/2011, 11h00   #6
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 466
Points : 8 466
Citation:
Envoyé par Bisûnûrs Voir le message
ne suis pas d'accord pour le 1 seul.
en effet inversion de signe
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/05/2011, 12h03   #7
Membre actif
 
Avatar de Causa Sui
 
Inscription : mai 2003
Messages : 133
Détails du profil
Informations forums :
Inscription : mai 2003
Messages : 133
Points : 172
Points : 172
Code PHP :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
function test_string($str)
{
    if(empty($str))
        return false;
    return (bool)preg_match("#^(?=(?>[a-z0-9]{8,})$)(?=[a-z]*\d)#i",$str);
}
 
test_string("");                  # renvoie false
test_string("aer65");             # renvoie false
test_string("azsdcfre");          # renvoie false
test_string("eazrazerer");        # renvoie false
test_string("aererer6");          # renvoie true
test_string("aererereerere9");    # renvoie true
test_string("65azerzerazerazer"); # renvoie true
Causa Sui est déconnecté   Envoyer un message privé Réponse avec citation 11
Vieux 24/05/2011, 23h23   #8
Invité régulier
 
Homme
Développeur Web
Inscription : mai 2011
Messages : 7
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : Biens de consommation

Informations forums :
Inscription : mai 2011
Messages : 7
Points : 5
Points : 5
Merci pour vos réponses.

J'ai en fait utiliser la première proposition de steath35 qui est à mon avis de loin la plus simple, mais c'est vrai que c'est une idée qui ne m'est absolument pas venue à l'esprit alors que, hein des fois

Donc voilà au final ce que ça donne :

Code :
1
2
3
 
if (string.match('[a-zA-Z0-9]{8,}') # vérif 8 caractères alphanumériques
&& string.match('[a-zA-Z0-9]*[0-9]{1}[a-zA-Z0-9]*')) #vérif au moins 1 chiffre
Spartacusply est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/05/2011, 01h37   #9
Membre actif
 
Avatar de Causa Sui
 
Inscription : mai 2003
Messages : 133
Détails du profil
Informations forums :
Inscription : mai 2003
Messages : 133
Points : 172
Points : 172
Citation:
Envoyé par Spartacusply Voir le message
Donc voilà au final ce que ça donne :

Code :
1
2
if (string.match('[a-zA-Z0-9]{8,}') # vérif 8 caractères alphanumériques
&& string.match('[a-zA-Z0-9]*[0-9]{1}[a-zA-Z0-9]*')) #vérif au moins 1 chiffre
En l'état, ça ne fonctionnera pas. Le bonne méthode, si tu veux le faire en deux fois:
Code javascript :
if( string.match(/^[a-z0-9]{8,}$/i) && string.match(/\d/) )
Ou en PHP
Code PHP :
if( preg_match("#^[a-z0-9]{8,}$#i",$string) && preg_match("#\d#",$string) )
Causa Sui est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 13h57.


 
 
 
 
Partenaires

Hébergement Web