"Kim Emax" <newsgroup@remove-emax.dk> writes:
> Lasse Reichstein Nielsen wrote:
>
>> Backslashen er ikke nødvendig, og gør faktisk slet ikke noget for
>> RegExp'en. Den bliver fjernet allerede når strengen bliver parset,
>> fordi "\." i en streng er det samme som bare ".".
>
> Det er ikke korrekt, med mindre JS opfører sig unormalt i forhold til andre
> sprog. \. betyder netop at man escaper betydning af . (hvilket som helst
> tegn) og kun matcher på tegnet .
Det ville være rigtigt hvis man skrev
/example\.com/
altså som del af en RegExp-literal. Det er ikke det der sker her.
Her laves det regulære udtryk vha. funktionen RegExp, som tager en
*streng* som argument.
Hvis man skriver
RegExp("example\.com")
så vil Javascript først fortolke string-literal'en "example\.com".
Da "\." ikke betyder noget specelt, bliver det blot til streng-værdien
"example.com". Den streng sendes til RegExp, som laver et RegExp-objekt
der svarer til de man ville få fra /example.com/.
Hvis man ønsker at lave det samme som /example\.com/ via RegExp, så skal
man skrive
RegExp("example\\.com")
Det vil give en en streng-værdi der indeholder en backslash.
(I det oprindelige eksempel stod "." mellem "[" og "]", hvor punktum
ikke betyder noget specielt, så der var ingen brug for backslashen
alligevel).
>> Den lidt kortere version er
>> strDom.replace(/[^.]+/g,"").length > 3
>
> Det er helt hen i vejret at bruge en replace på en funktion, der skal
> tjekke, hvor mange tegn der er i en streng.
Fjern resten, tjek hvor mange der er tilbage. Lige ud af landevejen :)
Ok, det er måske lidt overkill, men jeg kunne være meget værre :)
Hvis jeg skulle bruge RegExps, så er denne nok lidt pænere:
---
function antalDot(strDom) {
var re = /\./g;
var num = 0;
while(re.exec(strDom)) {
num++;
}
return num;
}
---
Ellers ville jeg bruge indexOf-varianten. Hvor meget jeg ville gøre ud
af det afhænger selvfølgelig også af hvor lang strengen forventes at
være.
/L
--
Lasse Reichstein Nielsen - lrn@hotpop.com
DHTML Death Colors: <URL:
http://www.infimum.dk/HTML/rasterTriangleDOM.html>
'Faith without judgement merely degrades the spirit divine.'