Avatar billede Slettet bruger
24. oktober 2004 - 15:37 Der er 12 kommentarer og
1 løsning

Reg exp hjælp

Hej!

Jeg har nedenstående kode der parser en tekst for link, title og en masse andet.

Men hvis f.eks. title mangler i linket fejler de alle. Hvordan kommer jeg udenom dette?

var re = /<A id="([^<]*)" title="([^<]*)" onclick="([^<]*)" href="([^<]*)">([^<]*)<\/A>/gi;
re.exec(str);
return {"id":RegExp.$1, "title":RegExp.$2, "onclick":RegExp.$3, "adr":RegExp.$4, "txt":RegExp.$5};
Avatar billede erikjacobsen Ekspert
24. oktober 2004 - 15:49 #1
var re = /<A id="([^<]*)"( title="([^<]*)")? onclick="([^<]*)" href="([^<]*)">([^<]*)<\/A>/gi;

Dine parenteser får så nye numre.
Avatar billede Slettet bruger
24. oktober 2004 - 15:53 #2
Hvad så hvis det skal være det samme for id, onclick og href?

Altså at de kan mangle uden at de andre "ikke virker" :)
Avatar billede erikjacobsen Ekspert
24. oktober 2004 - 15:56 #3
en <a> uden en href? Jah, ok. Noget i retning af

var re = /<A id="([^<]*)"( title="([^<]*)")?( onclick="([^<]*)")?( href="([^<]*)")?>([^<]*)<\/A>/gi;

Husk at tælle start-parenteser, for at få numrene på dem du vil have.
Avatar billede Slettet bruger
24. oktober 2004 - 15:59 #4
hehe..ja, men det er lidt sjovt kan jeg godt se :D
Avatar billede plx Nybegynder
24. oktober 2004 - 16:04 #5
et lille tip, hvis man smider ?: indenfor en parentes, så tæller den ikke med

(?: title="([^<]*)")?
Avatar billede Slettet bruger
24. oktober 2004 - 16:17 #6
Hvis nu det (næsten) færdige script ser sådan her ud (str sat for at teste) hvad skal så rettes for at det virker? Det der med at tælle paranteser, hvor skal det ske?:

<script type="text/javascript">

function tjek_link(str) {
var re = /<A id="([^<]*)"( title="([^<]*)")?( href="([^<]*)")?( target="([^<]*)")?( onclick="([^<]*)")?>([^<]*)<\/A>/gi;
re.exec(str);
return {"id":RegExp.$1, "title":RegExp.$2, "adr":RegExp.$3, "targ":RegExp.$4, "onclick":RegExp.$5, "txt":RegExp.$6};
}

str = '<A id="l47633286b677327297c2f3927" title="En title tekst" href="http://www.google.dk/" target="_self" onclick="asdf">Link til Google</A>';

ret = tjek_link(str);
alert(ret.id);

</script>
Avatar billede erikjacobsen Ekspert
24. oktober 2004 - 16:29 #7
Så vidt jeg lige kan se
return {"id":RegExp.$1, "title":RegExp.$3, "adr":RegExp.$5, "targ":RegExp.$7, "onclick":RegExp.$9, "txt":RegExp.$10};
Avatar billede Slettet bruger
24. oktober 2004 - 17:01 #8
Hmmm..kan ikke få det til at virke, alert(ret.id); alerter det her:

l47633286b677327297c2f3927" title="En title tekst" href="http://www.google.dk/" target="_self" onclick="asdf
Avatar billede erikjacobsen Ekspert
24. oktober 2004 - 17:05 #9
Jah, du skal nok ændre dine strenge til
  "([^<"]*)"
Avatar billede erikjacobsen Ekspert
24. oktober 2004 - 17:06 #10
Eller bare:
  "([^"]*)"
Avatar billede Slettet bruger
24. oktober 2004 - 22:38 #11
Jamen så spiller det jo :)

Point til alle dem med blå bukser! (Eller dem der har hjulpet mig)
Avatar billede erikjacobsen Ekspert
24. oktober 2004 - 23:08 #12
Jeg går altid i røde bukser - ingen point til mig, tak. ;)
Avatar billede Slettet bruger
27. oktober 2004 - 00:13 #13
oki så :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester