96 votes

Comment identifier une chaîne donnée est le format de couleur hexadécimal

Je cherche une expression régulière pour valider les couleurs hexadécimales dans ASP.NET C# et
je cherche aussi du code pour la validation côté serveur.

Par exemple : #CCCCCC

215voto

Joey Points 148544

Remarque : Ceci est strictement pour la validation, c'est-à-dire l'acceptation d'une couleur hexadécimale valide. Pour l'analyse réelle, vous n'obtiendrez pas les pièces individuelles hors de cela.

^#(?:[0-9a-fA-F]{3}){1,2}$

Pour ARGB :

^#(?:[0-9a-fA-F]{3,4}){1,2}$

Dissection :

^              anchor for start of string
#              the literal #
(              start of group
 ?:            indicate a non-capturing group that doesn't generate backreferences
 [0-9a-fA-F]   hexadecimal digit
 {3}           three times
)              end of group
{1,2}          repeat either once or twice
$              anchor for end of string

Cela correspondra à une valeur de couleur hexadécimale arbitraire qui peut être utilisée dans CSS, telle que #91bf4a ou #f13.

8voto

SamiAzar Points 1041

toutes les réponses mentionnées format RGB, voici regex pour le format ARGB :

^#[0-9a-fA-F]{8}$|#[0-9a-fA-F]{6}$|#[0-9a-fA-F]{4}$|#[0-9a-fA-F]{3}$

5voto

chharvey Points 1001

Cela doit correspondre #rgb #rgba #rrggbb #rrggbbaa :

/^#(?:(?:[\da-f]{3}){1,2}|(?:[\da-f]{4}){1,2})$/i

décomposer :

^            // start of line
#            // literal pound sign, followed by
(?:          // either:
  (?:          // a non-capturing group of:
    [\da-f]{3}   // exactly 3 of: a single digit or a letter 'a'–'f'
  ){1,2}       // repeated exactly 1 or 2 times
|            // or:
  (?:          // a non-capturing group of:
    [\da-f]{4}   // exactly 4 of: a single digit or a letter 'a'–'f'
  ){1,2}       // repeated exactly 1 or 2 times
)
$            // end of line
i            // ignore case (let 'A'–'F' match 'a'–'f')

Notez que ce qui précède n'est pas équivalent à cette syntaxe, ce qui est incorrect :

/^#(?:[\da-f]{3,4}){1,2}$/i

Cela permettrait un groupe de 3 suivi d'un groupe de 4, tel que #1234567, qui n'est pas une couleur hexadécimale valide.

4voto

FrancescoMM Points 1205

Ceci si vous voulez accepter les couleurs nommées et rgb(a,b,c) trop. Le "i" final est insensible à la casse.

Couleurs HTML (#123, rgb non accepté)

/^(#[a-f0-9]{6}|black|green|silver|gray|olive|white|yellow|maroon|navy|red|blue|purple|teal|fuchsia|aqua)$/i

Couleurs CSS (#123, rgb accepté)

/^(#[a-f0-9]{6}|#[a-f0-9]{3}|rgb *\( *[0-9]{1,3}%? *, *[0-9]{1,3}%? *, *[0-9]{1,3}%? *\)|rgba *\( *[0-9]{1,3}%? *, *[0-9]{1,3}%? *, *[0-9]{1,3}%? *, *[0-9]{1,3}%? *\)|black|green|silver|gray|olive|white|yellow|maroon|navy|red|blue|purple|teal|fuchsia|aqua)$/i

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X