Regex tout sauf un groupe de caractères

Résolu/Fermé
snipchain Messages postés 6 Date d'inscription samedi 6 juillet 2013 Statut Membre Dernière intervention 18 août 2013 - 18 juil. 2013 à 12:31
snipchain Messages postés 6 Date d'inscription samedi 6 juillet 2013 Statut Membre Dernière intervention 18 août 2013 - 19 juil. 2013 à 11:30
Bonjour à tous! :)

J'essai de trouver une regex qui me renverrait un message d erreur si un groupe de caractères est utilisé de facon abusive (permission d'un seul de ces caractères à la fois)...

exemple de ce qui ne devrait pas passer: 'mon ch$$$at joue' ou 'mon $$$chat joue' ou 'mon chat$$$ joue' ou 'mon ch&#§at joue' ou 'mon chat&#§ joue' ou 'mon &#§chat joue'

exemple de ce qui pourrait passer: 'mon ch$at joue' ou 'mon $chat joue' ou 'mon chat$ joue' ou 'mon ch&at joue' ou 'mon chat& joue' ou 'mon &chat joue'

j'ai tenté un
if (!preg_match('#.*[^(\'-\?\!\(\)&\|@\#§<>\^\{\}\[\]\$\*%\+\/\\€)+].*#i', $value)){echo 'incorrect';}
mais sans résultat... :s

quelqu'un a t il une idée? merci d'avance! :)

2 réponses

Zep3k!GnO Messages postés 2025 Date d'inscription jeudi 22 septembre 2005 Statut Membre Dernière intervention 18 novembre 2015 200
18 juil. 2013 à 16:31
si je comprends bien ta demande, ton soucis est de spécifier le nombre de fois ou le caractère est présent dans la string, avec un groupement ou tu peux l'avoir 1 seul fois (genre ton $) et un autre groupement ou tu ne peux pas l'avoir du tout (genre ton §)
Si oui, il faut utiliser la syntaxe suivante :
if (preg_match('#([\$]{2,})|([§]{1,})#i', $value)){echo 'incorrect';} 

Ici, c'est pour avoir le droit d'avoir 1 seul $ (à la suite) et aucun § dans la string contenue dans $value.
0