Partage
  • Partager sur Facebook
  • Partager sur Twitter

REGEX Exclure un mot d'une pattern

Sujet résolu
27 juin 2012 à 20:38:56

Bonjour,

J'ai une regex comme suit :

([0-9A-Za-z-]{3,})


elle valide tout les mot de 3 lettres ou plus tiret compris..

Mais comment exclure un mot de cette pattern ? par exemple le mot chat

J'ai éssayé
([0-9A-Za-z-]{3,})(?!chat)
sans succès..

Une idée?
  • Partager sur Facebook
  • Partager sur Twitter
27 juin 2012 à 20:53:35

Bonjour,

L’assertion que tu as faite ((?!chat)) est une assertion avant, qui va donc lire les caractères après elle. Il faut donc que tu la mette avant le reste de la regex ou que tu utilises une assertion arrière ((?<!chat)). ;)
  • Partager sur Facebook
  • Partager sur Twitter
27 juin 2012 à 20:57:39

Merci je peux cumuler plusieurs mot à exclure ?

genre (?!chat)(?!chien)([0-9A-Za-z-]{3,}) ?
  • Partager sur Facebook
  • Partager sur Twitter
27 juin 2012 à 21:00:14

Ou genre (?!chat|?!chien)([0-9A-Za-z-]{3,}) ?
  • Partager sur Facebook
  • Partager sur Twitter
28 juin 2012 à 9:48:02

kervanec est à mon avis plus proche de la solution « propre » (même si ta solution, Niiu, me semble fonctionner) : je dirais (?!chat|chien)([0-9A-Za-z-]{3,}) ou (?!(chat|chien))([0-9A-Za-z-]{3,})

N.B. — Pas besoin d’indiquer les majuscules dans ta classe si tu utilises le flag i : #(?!(chat|chien))([0-9a-z-]{3,})#i fonctionne aussi bien, et en plus ça bloquera aussi « Chat », « CHIEN », « cHaT », etc. ;)
  • Partager sur Facebook
  • Partager sur Twitter
29 juin 2012 à 23:14:20

C'est vachement bien le regex, mais c'est long à apprendre, surtout quand on s'en sert ponctuellement ! :)
J'débute, et j'galère !

Merci à ce site (et aux gens dessus hein) en tout cas, il aide bien !
  • Partager sur Facebook
  • Partager sur Twitter