29. august 2005 - 18:17Der er
17 kommentarer og 1 løsning
Hvornår gælder "multiline"
Hej - jeg sysler stadig med RegExp.
var R=new RegExp("xxx","igm");
som også kan skrives sådan her:
var R=/xxx/igm;
indeholder 3 søgemode-anvisninger, nemlig i og g og m.
Det er let for mig at finde eksempler på, at i og g ("ignorecase" og "global") gør en forskel.
Men jeg har svært ved at finde eksempler hvor m ("multiline") gør en forskel.
Hvordan sørger man for, at en bestemt tekst faktisk strækker sig over flere linjer? Jeg kan i hvert fald ikke få mine indtastninger i et textarea til at gøre det. Der kommer de samme matches hvad enten jeg bruger /ig eller igm
Jeg har forsøgt med <br>, \n og et tryk på entertasten. - Hilsen Per
Det kan zq også være en lidt tricky én at gennemskue, når man 'ankommer' til RegExp. Du ved formodentlig nu, at '$' matcher slutningen på en linje. Prøv så dette eksempel med og uden en m-modifier:
<script type="text/JavaScript"> s = "blabla 123 bla\nblablablabla blabla 123\nblabla 123"; s = s.replace(/123$/g, "XXX"); alert(s) </script>
- så skulle forskellen gerne syne lidt mere transparent ;o)
Ole -> Jeg ved godt jeg er irriterende. Jeg krummer selv tæer.
Dit eksempel virker. Og det er meget oplysende. Men det virker IKKE, når jeg indtaster s (teksten) i et textarea. Og det skulle det gerne, for jeg arbejder med at lave et lille program til at teste hvordan en RegExp læser en indtastet string.
Egentlig er det ikke et RegExp-problem dette her. Det er mere dét at oversætte indholdet af et textarea til en string, tror jeg. - Hilsen Per
Hm, måske skulle man splitte sit textarea med \n ...
Nej, for Satan! ... pardon my French ... Det var absolut ment som en joke! :)
Når man selv kan - og følger dine spørgsmål - er det som at se et kort af et kendt landskab. Et kort over den jungle, jeg for få år siden selv fægtede mig igennem ... iført machette og editor. Det er tværtimod en fornøjelse at forsøge at trække buskene lidt til side for en ihærdig opdagelsesrejsende ;o)
Prøv dette, som fungerer fint her:
<script type="text/JavaScript"> function doMyRegExp_A() { var s = document.getElementById("gnu").value; s = s.replace(/123$/g, "XXX"); alert(s) } function doMyRegExp_B() { var s = document.getElementById("gnu").value; s = s.replace(/123$/gm, "XXX"); alert(s) } </script>
Hehe ... du er bare røget ind i et andet lille problem :) Når du skriver '\n' ind i et textarea - mens dokumentet ligger i browseren - står der i value-strengen '\\n' ;o)
Prøv at taste strengen ind i dette:
<script type="text/JavaScript"> function doMyRegExp() { var s = document.getElementById("gnu").value; s = s.replace(/\\n/g, "\n") s = s.replace(/123$/gm, "XXX"); alert(s) } </script>
Hold da op: Det virker! Hvorfor kunne jeg ikke få det til det før? (Altså før jeg stillede spørgsmålet.) Nå, jeg havde jo heller ikke dit glimrende eksempel ved hånden.
Men jeg har nu aldrig troet at du var irriteret i virkeligheden. (Jeg bruger bare ikke smileys!)
Venligst læg et svar. Mine 30 point er nok i underkanten, men du kan nok hente flere senere. - Hilsen Per
Tjah, eller også var det den celle bag det andet øjenbryn, som gik i selvsving !-)
-- eller-tegnet giver rig mulighed for at lave småfejl, og i en hel del regexps vil man jo klaske dem ind i en gruppe, fordi der både står noget foran og bagved ...
-- og der var lige et tilfælde af sammenbruddet i den anden celle, fordi jeg opfattede det tegn som tegn-baseret !o]
Jes >> har jeg ikke nævnt for dig, du skal passe på med at aktivere begge celler på én og samme gang? ;D
Per >> bær venligst over med os. En vigtig lære man kan udlede af vores små usikkerheder er, at RegExp hurtig bliver gyngende grund og at det gælder om at holde tungen lige i næsen ;o) Man får lynhurtigt udelukket 'venligtsindede' - og budt 'terrorister' indenfor - hvis man ikke er umådelig forsigtig med opstilling af regler og kriterier
Næh, det er vist mig, der har nævnt det for dig !-)
Synes godt om
Ny brugerNybegynder
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.