Autor Zpráva
silvestr
Profil *
ahoj všem,

snažím se vytvořit regulární výraz pro barvy rgb včetně čárek, takže správný a povolený zápis by byl:

"0-255,0-255,0,255" ... udělal jsem tohle:

^[0-2]?[0-5]?[0-5]+(\,[0-2]?[0-5]?[0-5])+(\,[0-2]?[0-5]?[0-5])$


ale má to dost chyb a já nevím jak na ně.

Zaprvý člověk může dát 25555,25555,25555 a regulárním výrazem to projde + desítková čísla jsou jen do 50, což by nebyl problém, ale nechci, aby bylo dovolený 299 ale jen 255, takže asi nějaká podmínka. Nevím. Pomožte mi prosím. Děkuju
Joker
Profil
Je nutné to dělat regulárním výrazem?
Co to prostě explodovat čárkou, jednotlivé části převést na číslo a zkontrolovat?
Mastodont
Profil
silvestr
AFAIK číselný interval nelze v reguláru vyjádřit. Takže viz Joker.
silvestr
Profil *
Joker

mno příjde mi to lepší, než 3x kontrolovat hodnotu

Mastodont

proč by to nešlo?
tiso
Profil
Mastodont - ale ide, len trošku zložitejšie:
$pattern='([0-9]{1}|[1-9]{1}[0-9]{1}|1[0-9]{2}|2[0-4]{1}[0-9]{1}|25[0 -5]{1})';
preg_match('/^'.$pattern.'\,'.$pattern.'\,'.$pattern.'$/', $subject, $matches);
silvestr
Profil *
wow, seš machr, budu to dlouho studovat, než to pochopím, ale funguje to, děkuju moc
silvestr
Profil *
trošku jsem ho zkrátil:

$pattern= '([0-9]{1}|[0-9]{2}|1[0-9]{1}[0-9]{1}|2[0-5][0-5])';


:-)
tiso
Profil
silvestr - to ti zase nepôjde...
Nie je to nič ťažké, stačilo rozdeliť čísla na 0-9, 10-99, 100-199, 200-249 a 250-255 a pre ne vytvoriť jednotlivé subvýrazy.
silvestr
Profil *
pro tu dvoustovku stačí jen 2[0-5][0-5] , ne? proč jí dělíš na dva 200-249 a 250-255 ?
Mastodont
Profil
Protože 227, 228, 249 apod.
silvestr
Profil *
jasně, teď mi to docvaklo! díky díky díky moc hlavně tiso

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: