RegExp : comment interdire une chaine

Résolu/Fermé
TheLamia
Messages postés
76
Date d'inscription
dimanche 11 février 2007
Statut
Membre
Dernière intervention
18 août 2010
- 28 juil. 2009 à 10:33
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
- 28 juil. 2009 à 11:41
Bonjour à vous !

Après de longues recherches, j'en viens à interroger la grande communauté de CommentCaMarche...
Je pensais m'y connaitre pas mal en expressions régulières, mais il y a une notion qui m'échappe, et pas moyen de trouver une réponse simple...

Je voudrais tout simplement interdire une chaine de caractère grace à l'utilisation d'une expression régulière. Je sais qu'on peut interdire des caractères ainsi : [^abc] (a, b, c interdits), mais pour une chaine complète?!
Par exemple, si je veux interdire la chaine "salut", vous feriez quoi ?

Merci à tous d'avance.

5 réponses

lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 565
28 juil. 2009 à 11:10
Re,

Oui dans les regex directement (source http://www.ilu.be/wiki/Les_motifs_des_REGEX )

(?=modèle)
Le test avant positif, se comporte comme des parenthèses non-capturantes sauf qu'elles ne consomment rien dans la chaine cible. Par exemple:
chat(?= perché| botté) reconnait chat seulement s'il est immédiatement suivi de perché ou botté.
\w(?!\.) reconnait un mot sauf s'il est suivit d'un point.


(?!modèle)
Le test avant négatif, se comporte comme des parenthèses non-capturantes sauf qu'elles ne consomment rien dans la chaine cible. Par exemple:
chat(?! perché| botté) reconnait chat seulement s'il n'est pas immédiatement suivi de perché ou botté.

(?<=modèle)
Le test arrière positif, se comporte comme des parenthèses non-capturantes sauf qu'elles ne consomment rien dans la chaine cible.
Exemple: (?<=\d)\d reconnait un chiffre que si il est immédiatement précedé d'un autre chiffre.


(?<!modèle)
Le test arrière négatif, se comporte comme des parenthèses non-capturantes sauf qu'elles ne consomment rien dans la chaine cible.
Exemple: (?<!\.)\w reconnait un mot seulement s'il n'est pas immédiatement précédé d'un point.


Regarde aussi (avec des exemples php)

Les tests avants positifs: (?=expression)
Les test avants négatifs: (?!expression)
Les tests arrières positifs: (?<=expression)
Les tests arrières négatifs: (?<!expression

10