30. juli 2012 - 10:25Der er
8 kommentarer og 1 løsning
ASP RegEx erstat tegn med bindesterg
Jeg har brug for via regex, at erstatte alle tegn der ikke er et af nedenstående godkendte tegn, med en bindestreg.
Godkendte tegn: a-z A-Z 0-0 bindestreg og bundstreg
(mellemrum og punktum skal også erstattes)
Så fx: "abc+def=ghi.jkl'mop" bliver til: "abc-def-ghi-jkl-mop"
jeg har brug for at det kun er de godkendte tegn der "overlever" - det må ikke virke således at jeg skal lave en liste over tegn der skal fjernes, eftersom der jo findes rigtigt rigtigt mange tegn som jeg ikke lige kan komme i tanke om.
Teknologi, AI og forretning er i centrum på Computerworlds Cloud og AI Festival i København d. 18. og 19. september. Se hele programmet for den store konference om strategisk brug af Cloud og AI på: www.cloud-festival.dk
Var i mellemtiden kommet frem til nedenstående, men kan bedre lide din, så du må meget gerne lægge et svar.
Function ReplaceNonAlphaNumericCharacters(ByVal txt, ByVal ReplacementChar) Set regEx = New RegExp regEx.Global = True regEx.Pattern = "[\W_]" ReplaceNonAlphaNumericCharacters = regEx.Replace(txt,ReplacementChar) Set regEx = Nothing End Function
"det må ikke virke således at jeg skal lave en liste over tegn der skal fjernes, eftersom der jo findes rigtigt rigtigt mange tegn som jeg ikke lige kan komme i tanke om."
Umiddelbart kunne men frygte, scriptet kunne være et forsøg på at øge sikkerhed ved bruger-input. I så fald tager du fat i den helt forkerte ende. Så skal du nemlig netop gøre det modsatte - altså definere de tilladte tegn og kun godkende dem. Årsagen er den, du selv angiver: "eftersom der jo findes rigtigt rigtigt mange tegn som jeg ikke lige kan komme i tanke om.". =)
Jeg kom lige pludselig i tanker om, at jeg muligvis havde læst din kommentar forkert. Nu, hvor jeg er vendt tilbage til den, ser jeg, at jeg vrøvlede *totalt* i #3 ... sorry! =)
Du gør naturligvis det helt rigtige ved at definere lovlige tegn - og ikke ulovlige *o)
Det er lige præcis hvad jeg mente - glad for at vi er enige om at det er den rette løsning :-)
Det skal dog ikke bruges til brugerinput som sådan... well på en måde... det skal bruges i forbindelse med fil-upload, hvor jeg ikke gider se underlige tegn som æ,ø,å,ö,~ osv. osv. i filnavnene :-)
(Der skal nemlig linkes til filerne senere, og URL'er er bare bedre uden specialtegn.)
Ps. laver lige dette til et svar, i tilfælde af at lclemens ikke vender tilbage med et svar snart.
Jamen, vi er helt enige om, at det er den rette vinkel at angribe sikkerhed fra. På den anden side synes jeg ikke, man bør spilde tid med specialtegn. Nu har vi haft WWW i 20 år - så nu burde man roligt kunne formode, folk har lært de mest elementære ting.
Hvis man sidder med et åbent, ikke-gemt Word dokument på sin laptop og piller batteriet ud - ja, så ved alle, man har kvajet sig Big Time! Ved man ikke det, må man lære det på den hårde måde *o)
På et eller andet tidspunkt må folk lære at bruge det skidt, de køber. Hvis folk ikke kan modstå fristelsen til at uploade filer (som regel billeder), må de lære, at til WWW uploader man ikke gigantiske digi-billeder - og at til WWW uploader man ikke filer med specialtegn i navnet.
Vil man udgive bøger, må man lære at skrive og aflevere et manuskript i passende tilstand. Hvis man vil udgive musik, må man lære at stemme sit instrument og spille på det. Vil man køre en bil, må man tage et kørekort og lære at køre - og man kunne blive ved og ved.
Hvis folk uploader filer med specialtegn i navnet, bør du vel bare afvise den pågældende upload og fortælle, hvorfor. Efter min mening er det udtryk for større brugervenlighed at lære folk noget - fremfor at tørre dem i r*ven. For så lærer de nemlig aldrig at gøre noget rigtigt =)
Desværre virker det bare ikke altid i praksis, når man laver løsninger der skal bruges af folk med ringe it-kundskaber.
Faktisk var første løsning baseret på at afbryde og informere brugeren hvis der var dumme tegn i filnavnet, men brugerne blev utilfreds/irriterede og holdt op med at bruge systemet i stedet for. ...så nu bliver filnavnene rettet for dem.
Der er et hav af mellemløsninger. Der er jo ingen, som siger, din første løsning var hensigtsmæssigt lavet. Glæden ved at lære nyt ligger dybt i de fleste, så det er næppe det, at du rettede brugerne, der var årsagen til 'brugerflugten' ... måske skulle du kikke på måden.
Der findes bunker af god læsning om psykologien i validering og fejlmeddelelser. Prøv f.eks. denne artikel som et sted at begynde
- og så er det næppe klogt at undervurdere brugeren ... heller ikke hende med 'ringe IT-kundskaber'. Ofte er hendes begavelse og indlæringsevner væsentligt bedre end udvikleren i den anden ende kan mønstre *o)
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.