Men jeg havde egentlig forestillet mig at der fandtes en notation, så man kunne bede om en liste udelukkende over $1-matches (for det tilfælde at min RegExp indeholdt flere sæt runde parenteser).
Hov - jeg havde ikke tænkt mig nok om førend min forrige kommentar. Jeg har jo nu et array over matches - og dem kan jeg da hver for sig undersøge ved at køre min RegExp på dem! - Så problemet er fuldstændig løst...
Har du testet konsekvenserne, for man skal lige vænne sig til måden en match returnerer med, for din teori om hvordan resultaterne ser ud, er ikke helt ved siden af !-)
Per, nu har jeg jo ikke kunne undgå at bemærke, du har smidt det store RegExp-trawl ud - og haler ind fra alle retninger. Så får man jo helt lyst til at komme forbi og aggere bifangst, selvom emnet ikke lige er, hvad du fiskede efter i denne tråd :)
En ganske anvendelig måde at bruge back-references på (og dem har du jo haft fat i i et andet spm) er at bruge en anonym funktion til at wrappe et eller andet, du vil gøre ved det fundne. F.eks:
<script type="text/JavaScript"> var s = "abcdefghij <div>En tekst i et div</div> blabla og bla"; var R = /<div>([^<]*)<\/div>/gi; s = s.replace(R, function($1, $2){return "<div>" + $2.toUpperCase() + " - NU I UPPERCASE :)</div>"}); alert(s) </script>
- eller du kan arbejde videre med det fundne i en anden funktion (der måske også bruger RegExp):
<script type="text/JavaScript"> function doSomething(s) { var R = /t\w{3}t/g return s.replace(R, "kommentar"); }
var s = "abcdefghij <div>En tekst i et div</div> blabla og bla"; var R = /<div>([^<]*)<\/div>/gi; s = s.replace(R, function($1, $2){return "<div>" + doSomething($2) + "</div>"}); alert(s) </script>
Det er måske ikke lige de mest oplagte eksempler på brugen - men det var, hvad jeg lige kunne komme i tanker om at vise det med ... og så er det nogenlunde overskueligt :)
- min clairvoyant - den parapsykopatsike, chackratransenderende Miss. Sibylla von Veddinge Bakker - har netop ringet og fortalt, at der inde i hendes krystalkugle sidder en midaldrende programmør med et regulært flabet udtryk i ansigtet og taster på en replik, mens han mumler noget uforståeligt om EU, bifangster og opbrugte torskekvoter.
olebole -> Du har ret i, at jeg er meget interesseret i RegExp lige nu. Torskekvoter er ikke en af mine interesser; men måske en af dine egne? Dit eksempel er ikke umiddelbart gennemskueligt for mig - men jeg skal nok få det tygget igennem!
For øvrigt vil jeg AFVISE din notation function a(b) { doSomething() }
... fordi den i mine øjne ikke afspejler hvor man befinder sig.
Jeg foretrækker
function a(b) { doSomething() }
... fordi derved vil de krøllede parenteser stå lige over hinanden: start og slut.
- hvilket gør koden totalt uoverskuelig for mig. I min verden hører start-tuborgen klart til på samme linie, som definitionen af det, den skal omkranse, står på.
Jeg var engang i Australien og tilbragte de første dage med at undre mig over, jeg hele tiden stødte frontalt ind i folk på fortorvet. Efter et par dage gik det op for mig, at når jeg gik til højre, gik 'han' til venstre ... og så skal det det jo gå galt. Vores 'medfødte' kørselsretning berører meget andet end måden, vi aggerer på i bil eller på cykel.
For australieren og mig er der ingen tvivl om, at hver vores måde at færdes på, er den eneste naturlige - og den eneste, der giver mening og overskuelighed i vores hverdag. Ingen af os kan dog argumentere seriøst vægtigt for, hvorfor 'min' opfattelse/vane er bedre end 'din'.
Jeg kan sagtens se din logik - den duer bare ikke for mig. Måske, du kan lykkes med projektet den dag, man kan få tyggegummi og plaster mod min vane ... nok ikke før ;o)
- og torskekvoterne var blot en 'insider' joke til roenving - og gik helt og aldeles på min egen person. Mere hvis det ikke skulle fremgå klart :)
I øvrigt kan det godt være, dette eksempel vil være en lille hjælp under 'gennemtygningen':
<script type="text/JavaScript"> var s = "abcdefghij <div>En tekst i et div</div> blabla og bla"; var R = /<div>([^<]*)<\/div>/gi; s.replace( R, function($1, $2){alert($1+"\n"+$2)} ); </script>
- bare så du kan se, hvad der egentlig sker i den anonyme funktion. I de to back-references $1 og $2 ligger henholdsvis hele strengen, der søges efter (i $1) - og det indhold, der blev fundet udfra mønstret i parentesen (i $2).
Du skal ikke tænke på, hvad man skal have ud af at gøre sådan. Eksemplet har ingen anvendelse udover at tydeliggøre, hvordan back-references opfører sig. Det, den anonyme funktion returnerer, bliver brugt som replace-streng - og eksemplet prøver at vise, hvordan du kan hive fat i de strenge, du finder. Så kan du selv finde på noget, der skal gøre ved strengene, inden de returneres fra funktionen - og kan bruges af replace-metoden.
Prøv det. Så kan det være, de to andre eksempler bliver lidt lettere at forstå ;o)
Hæ, sjovt med din oplevelse i Australien. Jeg går altid højre om folk jeg møder - fordi jeg har iagttaget at det er sådan "man" gør (her).
Tak for supplerende studiemateriale. - Hilsen Per
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.