/ Forside / Teknologi / Udvikling / ASP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
Validere html-farve?!?
Fra : Ryan Dahl


Dato : 10-01-05 17:08

Hej,

fra min database henter jeg en farve defineret med HEX f.eks.:
"#22dd77". Er der nogen der har et hurtigt trick til at validere at
tekststrengen, som beskriver farven er korrekt.

Dvs. at første tegn er #, og at der herefter er 6 tegn med en af
følgende værdier: 0-9, a-f, A-F.

Der er sikkert en eller anden vild smart metode med regular
expressions, meeen jeg er ikke så hård til lige det

På forhånd tak
Ryan Dahl

 
 
Jens Gyldenkærne Cla~ (10-01-2005)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 10-01-05 17:34

Ryan Dahl skrev:

> Der er sikkert en eller anden vild smart metode med regular
> expressions, meeen jeg er ikke så hård til lige det

Prøv dette:

#[0-9a-fA-F]{3}([0-9a-fA-F]{3})?\b

Tjek evt. betydningen her:
<http://www.regular-expressions.info/reference.html>


--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Ryan Dahl (10-01-2005)
Kommentar
Fra : Ryan Dahl


Dato : 10-01-05 23:32

On Mon, 10 Jan 2005 17:33:37 +0100, Jens Gyldenkærne Clausen
<jens@gyros.invalid> wrote:

>Prøv dette:
>
>#[0-9a-fA-F]{3}([0-9a-fA-F]{3})?\b
>

>Tjek evt. betydningen her:
><http://www.regular-expressions.info/reference.html>

Tak for eksempel (læs: Nødvendig inspiration) og link.

Jeg fik det til at virke med:

#([0-9A-F]){6}

forudsat at jeg forinden checker streng-længde og sætter regexp til at
ignorere case. - Men det er godt nok for viderekommende!!

mvh
Ryan

Jens Gyldenkærne Cla~ (11-01-2005)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 11-01-05 00:39

Ryan Dahl skrev:

> Tak for eksempel (læs: Nødvendig inspiration) og link.

Velbekomme.


> Jeg fik det til at virke med:
>
> #([0-9A-F]){6}

- men så godkender du ikke legale farvekoder som #ffc og #c00


> forudsat at jeg forinden checker streng-længde

Det er ikke nødvendigt hvis du bruger \b - word boundary efter
udtrykket.

> og sætter regexp til at ignorere case.

- det er til gengæld en god ide.


Her er hvad jeg nåede frem til:

Function tjekFarve(tekst)
Dim re
Set re = New RegExp
re.Pattern = "(#[\da-f]{3}(?:[\da-f]{3})?)\b"
re.IgnoreCase = True
re.Global = True
tjekFarve = _
   re.Replace(tekst, "<span style=""color: $1"">$1</span>")
End Function

Regex'et leder efter #-tegnet efterfulgt af tre tegn der enten er
cifre (\d) eller bogstaverne a-f. Herefter følger den samme gruppe
af tegn, pakket ind i en ikke-gemt gruppe (?:[indhold]) som er
markeret optional (0 eller 1 forekomster) med tegnet ? Til slut
kigges der efter en ordgrænse (\b) for at undgå at der kan matches
på #f123 eller #1234567. Ordgrænsen er sat uden for en
gruppeparantes, mens resten af udtrykket er indeni - det er derfor
tilgængeligt via $1-syntaksen i en replace-sætning.


> - Men det er godt nok for viderekommende!!

Man kan _meget_ med regex.
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Ryan Dahl (11-01-2005)
Kommentar
Fra : Ryan Dahl


Dato : 11-01-05 09:35

On Tue, 11 Jan 2005 00:38:31 +0100, Jens Gyldenkærne Clausen
<jens@gyros.invalid> wrote:

>- men så godkender du ikke legale farvekoder som #ffc og #c00

Hmm, jeg var ikke klar over at man blot kunne skrive det med 3 tegn, -
så der var en mening med galskaben

>Regex'et leder ......SNIP!

Tak for forklaringen.

mvh
Ryan


Jens Gyldenkærne Cla~ (11-01-2005)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 11-01-05 10:06

Ryan Dahl skrev:

> Hmm, jeg var ikke klar over at man blot kunne skrive det med 3
> tegn,

De udvides ved at dublere hvert af de tre tegn: #abc svarer derfor
til #aabbcc
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Søg
Reklame
Statistik
Spørgsmål : 177552
Tips : 31968
Nyheder : 719565
Indlæg : 6408849
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste