03. februar 2003 - 15:55Der er
9 kommentarer og 1 løsning
fil validator i java.script
Hejsa jeg er ved at lave en validator der skal tjecke at brugerens filnavn er uden special tegn mm. før man uploader.
re = new RegExp("\\([a-zA-Z0-9]*)\.(doc|pdf|gif|jpg)$"); var str = form.thefile.value ; str.match(re); if (re.test(str) == false) { alert('Du må ikke bruge special tegn og æøå i dit filnavn'); }
Koden er sådan set rigtig nok, og kan godt få den til at virke hvis jeg ikke bruger \\ Jeg er dog nød til at bruge \\ hvis jeg skal finde den sidste del af strengen hvor filnavnet er. Det er ret mærkeligt, fordi når den kommer til \\ så ignorrere den alt kode der kommer efter og sende formen afsted.
overflødig. For det andet sker der det, at \\ delvis sluges af at du har specificeret strengen med ". Jeg vil gætte mig til, at du for at få det til at virke, er nødt til at skrive
re = new RegExp("\\\\([a-zA-Z0-9]*)\.(doc|pdf|gif|jpg)$");
altså med FIRE backslash - det kan du dog verificere ved at skrive
alert(re.source);
som vil vise det regulære udtryk, sådan som JavaScript har opfattet det.
Nope Skriver jeg \\\\ kommer den tilbage med at der er \\ som den også skal og godkender ikke strengen.
str.match(re); skulle væk det er rigtigt.
Det mærkelige er at jeg har i koden skrevet: -------------------------------------------------- re = new RegExp("\\([a-zA-Z0-9]*)\.(doc|pdf|gif|jpg)$"); alert(re.source); var str = form.thefile.value ; str.match(re); if (re.test(str) == false) { alert('Du må ikke bruge special tegn og æøå i dit filnavn'); } ----------------------------------------- Læg mærke til alerten! Den kommer aldrig op, den fyre bare formen af og glæmmer alt den kode der under den skulle fyre af!
Dit problem er, at med \\ har du et syntaktisk ukorrekt udtryk, hvilket resulterer i en JavaScript fejl, som du åbenbart ikke rigtig opdager. Resultatet er, at den stopper udførslen af koden. Hvor den så ender, ved jeg ikke, da jeg ikke kender resten af din kode. Men, der var en fejl til lidt længere henne: \ lige før punktum skal også fordobles! Altså prøv:
re = new RegExp("\\\\([a-zA-Z0-9]*)\\.(doc|pdf|gif|jpg)$");
Meget meget mystisk, jeg er meget sikker på at jeg har teste med både test_fil.pdf og testfil.pdf, med din kode, før. JEg ville lige prøve igen, før jeg skrev at det ikke virkede.
Men det virker altså, meget mystisk. Måske testet jeg ikke med testfil.pdf og det var derfor jeg fik fejl, hmmm. Nå lidt dum nybegynder programmør er man vel stadig. =)
Jeg må nok indrømme, at jeg har dyrket det en del i tidens løb - simpelthen fordi det tillader en at lave forbløffende mange smarte ting med meget beskeden indsats. Hvis du selv vil vide mere, kan jeg anbefale bogen "Mastering Regular Expressions" af Jeffrey Friedl, udgivet af O'Reilly. Den er rigtig god.
Yep, jeg skal til at købe bogen, men det er ikke fordi man kan finde den i danske bog forretninger. Må nok ty til Amazone eller noget i den stil.
Btw. jeg skal lige forhøre mig. Havde du været interesseret i noget freelance arbejde med reg.ex?
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.