Avatar billede monkeysee Nybegynder
26. november 2003 - 14:33 Der er 6 kommentarer og
1 løsning

Regulære udtryk som driller

Jeg bruger flg. regulære udtryk til at se på en given HTML-streng, og bestemme hvorvidt den første <DIV> tag benytter absolut eller relativ placering)

//---------------------
var re2=/<div[^\>]style\s*=[\"\'\s][\S\s]*position\s*:\s*(relative|absolute)+/i
//---------------------

Dette udtryk skulle gerne matche f.eks denne tekst:

<DIV id="blabla" style="top:100;position:absolute">indhold</DIV>

- og returnere "absolute" i RegExp.$1

Men den driller! Jeg kan kun få den til at virke hvis jeg tjekker for *enten* "absolute" eller "relative", og altså ikke både-og. Hvilket er hvad jeg vil.

Er der nogen som kan fortælle mig hvad jeg gør forkert?
Avatar billede roenving Novice
26. november 2003 - 21:42 #1
Sådan virker den (ikke intensivt testet !-)

var reg = /<div[^\>].*(relative|absolute)+.*/gi
alert(val.replace(reg, "\$1"));
Avatar billede monkeysee Nybegynder
26. november 2003 - 23:55 #2
Hej, det var dog herligt at se det virke - point til roenvig

I min endelige (?) udgave ser udtrykket sådan ud:

var reg = /<div[^\>].*style\s*=.*position\s*:\s*(relative|absolute)+.*/i

Dette vil finde værdien, men kun hvis det er en positions-egenskab indenfor en style definition, og kun hvis denne definition er indeholdt i den første <DIV> tag (bemærk at jeg ikke søger globalt (/gi), da jeg ville risikere at få returneret den sidste <DIV> tag istedet for den første).

P.S: Har du tjekket aspemporium.com? Han har en forrygende samling af regulære udtryk, m. både jscript og vbscript eksempler.
Avatar billede roenving Novice
27. november 2003 - 00:01 #3
-- nej, ham kender jeg ikke, mine RegExp-eksempler er enten hjemmestrikkede eller en gang imellem hentet fra andet end spørgsmål her på http://www.regexlib.com/

-- men velbekomme '-)
Avatar billede roenving Novice
27. november 2003 - 00:09 #4
Hrm, den virkede faktisk på denne:

<span id="minSpan"><div id="div2" style="background:red;">Div2-tekst<br><img src="../billede.jpg" style="position:relative;width:200px;height:150px;"></div></span>

med svaret 'relative', så der skal arbejdes lidt mere på den ...

-- jeg kigger også !-)
Avatar billede roenving Novice
27. november 2003 - 00:09 #5
-- og så hedder det i 00:01:19 ELLER på http://www.regexlib.com/
Avatar billede monkeysee Nybegynder
27. november 2003 - 12:16 #6
Nice! Det er et fedt sted, regexlib.

I øvrigt er fejlen ikke så slem, jeg har ikke situationer, hvor andre tags kommer før <DIV>. Jeg vil blot undgå at den matcher *senere* forekomster af mønsteret. Desuden tjekker jeg for den eksakte værdi bagefter, if(val=="relative"). Og så vidt jeg kan se returnerer den <SPAN id="minSpan">relative.

Men det er jo det interessante ved regexp, der er næsten altid mulighed for at optimere den form for kode!
Avatar billede roenving Novice
29. november 2003 - 04:20 #7
-- har desværre ikke haft tid immellem il at gå videre med projektet, men jeg takker da for points ;~}
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