[JS] Nombres ET lettres [Résolu]

Signaler
Messages postés
95
Date d'inscription
mercredi 6 juillet 2005
Statut
Membre
Dernière intervention
23 août 2010
-
Messages postés
95
Date d'inscription
mercredi 6 juillet 2005
Statut
Membre
Dernière intervention
23 août 2010
-
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

Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
66
\b(?=\w{6})(\w*?\d+\w*?)\b


Renfield - Admin CodeS-SourceS - MVP Visual Basic
Messages postés
95
Date d'inscription
mercredi 6 juillet 2005
Statut
Membre
Dernière intervention
23 août 2010

Merci
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
66
gaffe, ca valide 123456 j'ignore si c'est souhaité


Renfield - Admin CodeS-SourceS - MVP Visual Basic
Messages postés
95
Date d'inscription
mercredi 6 juillet 2005
Statut
Membre
Dernière intervention
23 août 2010

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)

++
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
66
\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
Messages postés
95
Date d'inscription
mercredi 6 juillet 2005
Statut
Membre
Dernière intervention
23 août 2010

merci pour ces précisions, c'est assez puissant quand même