[JS] Nombres ET lettres

Résolu
Equilibrius Messages postés 95 Date d'inscription mercredi 6 juillet 2005 Statut Membre Dernière intervention 23 août 2010 - 21 oct. 2009 à 13:29
Equilibrius Messages postés 95 Date d'inscription mercredi 6 juillet 2005 Statut Membre Dernière intervention 23 août 2010 - 22 oct. 2009 à 20:50
Bonjour, je souhaiterai faire un regex pour extraire des chaines du type 'poli78' ou 'pa7edf' ou encore '7d6s4d', en gros une chaine de 6 caractères qui contient des lettres ET des (ou un) nombre.

donc
RegExp('([0-9a-z]){6}','gi')
ne marche pas (il prend aussi les chaines de 6 caractères uniquement composé de lettres).

j'ai testé pas mal de combinaison sans succès :s

6 réponses

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
22 oct. 2009 à 06:46
\b(?=\w{6})(\w*?\d+\w*?)\b


Renfield - Admin CodeS-SourceS - MVP Visual Basic
3
Equilibrius Messages postés 95 Date d'inscription mercredi 6 juillet 2005 Statut Membre Dernière intervention 23 août 2010
22 oct. 2009 à 16:06
Merci
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
22 oct. 2009 à 16:08
gaffe, ca valide 123456 j'ignore si c'est souhaité


Renfield - Admin CodeS-SourceS - MVP Visual Basic
0
Equilibrius Messages postés 95 Date d'inscription mercredi 6 juillet 2005 Statut Membre Dernière intervention 23 août 2010
22 oct. 2009 à 19:38
En effet, c'est pas souhaité, suffit de faire un simple test derrière, mais de toute façon, c'est très improbable que je rencontre des chaînes de 6 caractères composé uniquement de chiffres.

Tu pourrais détailler la construction du regex si possible ?? :p

Je sais déjà que \w correspond a la classe [0-9a-zA-Z_] et que \d correspond a [0-9] (si je me trompe pas :x)

++
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
22 oct. 2009 à 20:44
\b marque un début ou fin de mot (un espace, un virgule....)

(?=\w{6})

l'expression qui suit répond a cette expression: 6 caractères alphanumériques

ainsi, on combine les expressions...

\b(?=\w{6})(?=.*\d.*)(.*?\D+.?)\b

Pour interdire le tout numérique :

\b(?=\w{6})(?!\d{6})(\w*\d\w*)\b


Renfield - Admin CodeS-SourceS - MVP Visual Basic
0
Equilibrius Messages postés 95 Date d'inscription mercredi 6 juillet 2005 Statut Membre Dernière intervention 23 août 2010
22 oct. 2009 à 20:50
merci pour ces précisions, c'est assez puissant quand même
0
Rejoignez-nous