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