Expression Regulière

meepmeep
Invité n'ayant pas de compte PHPfrance

14 août 2007, 06:54

Bonjour, je souhaite controler que le code à 6 caractères rentré par un utilisateur est bien :
SOIT VIDE
SOIT UN CODE HEXA POUR UNE COULEUR HTML

Exemple :
Soit : (vide par exemple)
Soit : FAFA06 (pour couleur #FAFA06 par exemple)

([A-F0-9]{6}) > Ceci me donne bien un code couleur
Comment rajouter la fait qu'on autorise les chaines vides ?

Merci pour votre aide.

Mammouth du PHP | 505 Messages

14 août 2007, 09:03

bah c'est tout bête, tu ajoutes une alternative vide.

Code : Tout sélectionner

([A-F0-9]{6}|^$)

Administrateur PHPfrance
Administrateur PHPfrance | 3088 Messages

14 août 2007, 09:48

Je crois que tu voulais dire

Code : Tout sélectionner

^([A-F0-9]{6}|)$
Sinon ça accepterait n'importe quel texte comprenant un code hexa.

ViPHP
ViPHP | 928 Messages

14 août 2007, 09:54

Ou alors plus simplement faire le controle en PHP :

Code : Tout sélectionner

if (empty($var) || preg_match('/^[a-f0-9]{6}$/i', $var))

Administrateur PHPfrance
Administrateur PHPfrance | 3088 Messages

14 août 2007, 10:08

Mmh, empty() renverra true si on entre "0", mais on pourrait utiliser
if ($var === '' || preg_match('/^[a-f0-9]{6}$/Di', $var))

meepmeep
Invité n'ayant pas de compte PHPfrance

14 août 2007, 17:05

Je crois que tu voulais dire

Code : Tout sélectionner

^([A-F0-9]{6}|)$
Sinon ça accepterait n'importe quel texte comprenant un code hexa.
C'est exactement ce qu'il me fallait ;)