11. april 2003 - 10:21Der er
24 kommentarer og 1 løsning
trim() metode
Jeg sidder her med en form-validering - og har fundet ud af, at javascript mangler en trim-metode - for den godtager åbenbart at brugernavn kan være " " (bemærk mellemrum)
Da jeg ikke er så stærk i RegExp, så tænke jeg, om der var en af jer, som ville tjene 10 lette ved at lave en RegExp, som fjerne alle mellemrum fra starten og slutningen af strengen således at " " bliver til "" -- og " abc " bliver til "abc"
Pokkers, man SKAL teste og man skal gøre det HVER ENESTE GANG! Uanset hvor nemt det på forhånd ser ud. Heraf kan udledes, at det gjorde jeg ikke ovenfor, og det virkede heller ikke! Prøv denher i stedet:
function trim( str ) { return str.replace(/^\s+(.+?)\s+$/, "$1"); }
^ begyndelsen af strengen, efterfulgt af \s* 0 eller flere forekomster af blanktegn, efterfulgt af (.+?) et positivt men 'ikke-grådigt' antal af 'hvadsomhelst', efterfulgt af \s* 0 eller flere forekomster af blanktegn, efterfulgt af $ afslutningen af strengen
Parantesen omslutter det, der senere afleveres som $1, spørgsmålstegnet ('ikke-grådig') sørger for at parantesen ikke 'spiser' afsluttende blanktegn, således at den anden \s* kommer til at omfatte de afsluttende blanktegn.
Det er ikke helt sort for mig mere - men dog stadig lidt... Jeg tror man skal have tid til at sætte sig ordenligt ind i regExp inden man kan forstå hvad der sker i ovenstående...
Nuvel ... Jeg har lige testet det - og det virker --- super!....
Hmmm ... åbenbart har jeg ikke testet ordenligt nok - for hvis strengen er " " eller " " (altså vilkårligt antal (over nul) [space] , så returneres " " som den trimmede streng :-(
Er det noget med den "ikke-grådige" ting ... Har ikke helt fattet det med grådighed...
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.