PHP RegExp für Hexcodes

Gsus

schwankend^^
ID: 215354
L
22 Mai 2006
1.553
68
Hallo,
ich kann leider noch überhaupt garnicht imt RegularExpressions umgehen. daher brauche ich den Code, der überprüft, ob es sich um eine Farbe im Format #FFFFFF handelt. Er muss also prüfen, ob die Variable 7 Zeichen lang ist, das erste Zeichen ein # ist und darauf nur 0-9 und A-F folgen.

Vielen Dank im Vorraus

mfg
gsus
 
sollte nicht so schwer sein...

Wie ich das ganz spontan machen würde:

PHP:
// Hex-Zahlen bestehen von 0-9 und a-f
if($is_hex = preg_match("/^[\da-f]{32}$/i", $eingabe))
{
  echo "Ist Hex-Zahl";
}

Hab's allerdings grad nicht ausprobiert :p
 
PHP:
// Hex-Zahlen bestehen von 0-9 und a-f
if($is_hex = preg_match("/^[\da-f]{32}$/i", $eingabe))
{
  echo "Ist Hex-Zahl";
}
kannst du den vielleicht kurz erklären? da muss doch auch irgendwo eine 7 drinstehen für max 7 zeichen und ein # da das ganz am anfang stehen muss oder nicht?
 
Code:
/^#[a-f0-9]{6}$/i
is korrekter. \d geht afaik in einer Characterklasse nicht.

Erklärung is einfach:
Code:
[COLOR=Red]/[/COLOR]^#[a-f0-9]{6}$[COLOR=Red]/i[/COLOR]
Syntax: / als Delimiter; Modifikator i bedeutet, dass Groß- und Kleinbuchstaben gleichwertig sind
Code:
/[COLOR=Red]^[/COLOR]#[a-f0-9]{6}[COLOR=Red]$[/COLOR]/i
^= Anfang, $ = Ende, d.h. der RegExp muss der ganzen Zeichenkette matchen. Ohne diese wäre auch "fofjof#33ddffjijoijo" gültig.
Code:
/^[COLOR=Red]#[/COLOR][a-f0-9]{6}$/i
Es muss das #-Zeichen da sein.
Code:
/^#[COLOR=Red][a-f0-9][/COLOR]{6}$/i
Es muss das Zeichen a, b, c, d, e, f (a-f) oder 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 (0-9) folgen....
Code:
/^#[a-f0-9][COLOR=Red]{6}[/COLOR]$/i
... und zwar genau 6x.

Mit diesem RegExp matcht dir aber z.B. #fff (weiß, Kurzschreibweise) nicht, sondern wirklich nur mit 6 Hexziffern.
 
/^#[a-f0-9]{6}$/i

einfach zu

/^#[a-f0-9]{3,6}$/

ändern. Somit werden alle arten zwischen 3 und 6 erkannt.