Avatar billede Slettet bruger
23. maj 2004 - 19:41 Der er 11 kommentarer og
1 løsning

Hjælp til Regexp

Hej Eksperter!

Givet en streng:

str = '?content.htm=1&klub=staerk&id=5'

Ønsket output: 'content.htm'

Har siddet og forsøgt mig frem og googlet som en gal, men kommer ikke nærmere end dette:

newstr = str.replace(/^[?]?(.*)[\.](.*)/ig,'$1');

Som kun giver mig 'content'

Jeg kan simpelthen ikke få den til at lave et match på '=' uden at det hele går amok og udtrykket fejler, er der nogen der kan se hvad der skal til?

På forhånd tak :)
Avatar billede roenving Novice
23. maj 2004 - 19:46 #1
Jeg er en doven hund, som ikke gider at bruge regexp til dette, når man kan:

newstr = str.split("=")[0].substring(1)M
Avatar billede roenving Novice
23. maj 2004 - 19:47 #2
-- m'et skulle have været naboen: et semikolon !-)
Avatar billede Slettet bruger
23. maj 2004 - 19:51 #3
Desværre ikke godt nok, har skam overvejet den nemme løsning :)

Umiddelbart tror jeg at det blot er en lille detalje i det ovennævnte udtryk, for at det virker fuldstændigt efter hensigten...
Avatar billede erikjacobsen Ekspert
23. maj 2004 - 19:58 #4
str = '?content.htm=1&klub=staerk&id=5';
if(a=/^\??([^=]+)/.exec(str)) {
  alert(a[1]);
} else {
  alert("no match");
}
Avatar billede Slettet bruger
23. maj 2004 - 20:08 #5
Hej Erik, som sædvanlig rammer du plet! :)

Men udtrykket virker ikke i replace statement:

str.replace(/^\??([^=]+)/,'$1');

Har du en idé om hvorfor?
Avatar billede erikjacobsen Ekspert
23. maj 2004 - 20:09 #6
Selvfølgelig virker det ikke i din replace - det er det jo ikke konstrueret til.
Avatar billede erikjacobsen Ekspert
23. maj 2004 - 20:11 #7
At bruge replace på den måde er temmelig bagvendt, men selvfølgelig muligt:
  newstr = str.replace(/^[?]?([^=]+).*/ig,'$1');
Det er ikke med min anbefaling.
Avatar billede Slettet bruger
23. maj 2004 - 20:18 #8
Hvorfor skulle udtrykket ikke kunne bruges i en replace?
Avatar billede erikjacobsen Ekspert
23. maj 2004 - 20:20 #9
Der er forskel, ik'os'? Ikke meget, men lidt. Nummer 2 kan reduceres til
  newstr = str.replace(/^\??([^=]+).*/,'$1');
Avatar billede Slettet bruger
23. maj 2004 - 20:24 #10
Ja det kan jeg se, havde helt glemt [^...] (any character which is not...)

Tak for hjælpen endnu en gang, drop lige et svar :)
Avatar billede erikjacobsen Ekspert
23. maj 2004 - 20:33 #11
Ellers tak, jeg samler ikke på point.
Avatar billede Slettet bruger
23. maj 2004 - 20:46 #12
Uanset hvad, tusind tak for hjælpen så, du har reddet mig for yderligere 5 grå hår! :)
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