J'ai besoin d'une expression régulière pour que preg_match accepte tous les caractères alphanumériques sauf l , L , v , V , 0 , 2 .
J'ai essayé
^[a-zA-Z0-9][^lLvV02]*$
Cela fonctionne bien en excluant lLvV02 mais il accepte aussi d'autres caractères comme ESPACE, ù, @, #, etc ...
Comment dois-je le changer?
3 Réponses :
Vous pouvez utiliser
^(?:(?![lLvV02])[a-zA-Z0-9])*$
Détails
^ - début de chaîne (?: - début d'un groupe sans capture
(?! [lLvV02]) [a-zA-Z0-9] - un caractère d'alnum qui n'est pas l'un des caractères de la classe de caractères résidant dans une anticipation négative ) * - fin du groupe non capturant, 0 ou plusieurs répétitions $ - fin de chaîne Voir le Graphique Regulex :
p>
Je sais que vous avez demandé un Regex, mais vous pouvez d'abord tester l'alphanumérique et seulement si cela réussit vérifier que les autres ne sont PAS présents:
if(ctype_alnum($string) && !preg_match('/[lLvV02]/', $string)) {
//pass
} else {
//fail
}
Ou éventuellement remplacer preg_match ( '/ ^ [^ lLvV02] + $ /', $ string) .
Pas ce que je cherchais, mais sympa quand même.
Le plus simple serait probablement: ^ [a-km-uw-zA-KM-UW-Z13-9] * $ .
Je ne dis pas que c'est joli mais ça fait ce qu'il est censé faire.
Utilisez
^ (?: (?! [LLvV02]) [a-zA-Z0-9]) * $