Avatar billede emkay Nybegynder
23. maj 2007 - 10:04 Der er 11 kommentarer og
1 løsning

Tjekke for alt andet end tal?

Jeg skal tjekke et felt for om der er skrevet andet end tal i det.
Der bruger jeg følgende Reg.Exp, men den godtager et enkelt mellemrum, hvilket jeg ikke har lyst til at den gør.
Skriver man et mellemrum og et tal. F.eks " 5", så godtager den det dog ikke.

Reg.Exp'en jeg bruger er følgende:
^\d+$

ASP.NET laver den det dog om til
^\\d+$

men det ved jeg ikke om har noget at sige...?
Avatar billede jensgram Nybegynder
23. maj 2007 - 11:01 #1
Hvis du vil tjekke, om der er ANDET end tal, så ville jeg:

(^$|[^\d])

Den giver positiv, hvis feltet er tomt eller indeholder noget, der ikke er et tal (0-9).
Avatar billede jensgram Nybegynder
23. maj 2007 - 11:02 #2
Skal den være positiv, hvis feltet KUN indeholder tal, så kan jeg ikke forstå, hvis

^\d+$

ikke virker :)
Avatar billede roenving Novice
23. maj 2007 - 22:18 #3
Du kunne jo prøve at checke for _andet_ end tal: ^\D$ ...

-- generelt er det sådan at store bogstaver er en negering af specialtegn i små bogstaver, f.eks. betyder \s whitespace, \S betyder ikke-whitespace !-)
Avatar billede jensgram Nybegynder
24. maj 2007 - 09:25 #4
Burde man så ikke udelade ^ og $  ?
Avatar billede emkay Nybegynder
25. maj 2007 - 09:25 #5
Hmm.. \D virker slet ikke.. Og både ^\d+$ og ^\D$ vil godt godtage et enkelt mellemrum, men ikke et mellemrum og et tal. (^$|[^\d]) duer slet ikke. Den gør det omvendt, sådan så den godt vil godtage bogstaver, men ikke tal :oS

Der skal tjekkes på alt andet end et tal. Dvs, hvis der kun er et mellemrum i feltet skal den lave fejl. Hvis der er tal OG bogstaver, skal den lave fejl. Hvis der kun er bogstaver skal den lave fejl. Det er kun hvis der KUN er tal at den skal godkendes.
Avatar billede jensgram Nybegynder
25. maj 2007 - 09:48 #6
Hmmm - har ingen erfaring med ASP.NET, men kan vi ikke se lidt mere kode?
Avatar billede emkay Nybegynder
25. maj 2007 - 10:18 #7
Det er ik lige så enkelt, så ASP.NET laver jo en ordentligt bunke indviklet JS, når man laver en validator. Men her er vist det meste af det for et enkelt af felterne:

var ctl00_ContentPlaceHolder1_RegularExpressionValidator1 = document.all ? document.all["ctl00_ContentPlaceHolder1_RegularExpressionValidator1"] : document.getElementById("ctl00_ContentPlaceHolder1_RegularExpressionValidator1");
ctl00_ContentPlaceHolder1_RegularExpressionValidator1.controltovalidate = "ctl00_ContentPlaceHolder1_txtCap";
ctl00_ContentPlaceHolder1_RegularExpressionValidator1.focusOnError = "t";
ctl00_ContentPlaceHolder1_RegularExpressionValidator1.errormessage = "<br />Du må kun indtaste tal i feltet";
ctl00_ContentPlaceHolder1_RegularExpressionValidator1.display = "Dynamic";
ctl00_ContentPlaceHolder1_RegularExpressionValidator1.evaluationfunction = "RegularExpressionValidatorEvaluateIsValid";
ctl00_ContentPlaceHolder1_RegularExpressionValidator1.validationexpression = "^\\d+$";


Som sagt laver den Reg exp'en om til "^\\d+$", altså med to \. Har det noget at sige?
Avatar billede jensgram Nybegynder
25. maj 2007 - 10:23 #8
Øh - det burde blot betyde, at \ escapes således at det regulære udtryk ender som ^\d+$ (korrekt). Som sagt: Ingen erfaring med ASP.NET, men det virker som om, at ^ og $ ikke har betydning...
Avatar billede emkay Nybegynder
25. maj 2007 - 10:40 #9
Hmm.. Alle tiders :S
Nå, men jeg må jo bare bruge min nødløsning så.
Det er lovligt at lade felterne stå tomme, hvor de så bliver opfattet som et 0. Så jeg fjerner bare alle mellemrum server-side. Håber bare ikke jeg løber ind i det en anden gang igen.. Men det gør jeg jo nok.. Nå, den tid, den sorg :) Videre i teksten og nu er det snart weekend.

Du har forsøgt ihærdigt jensgram, så smid et svar, så får du point :)
Avatar billede jensgram Nybegynder
25. maj 2007 - 11:26 #10
Nej, ellers mange tak. Problemet blev jo ikke løst, så behold dem til en anden god gang.

God weekend.
Avatar billede emkay Nybegynder
25. maj 2007 - 11:38 #11
Ok så.. Bare i orden..
Avatar billede roenving Novice
25. maj 2007 - 16:19 #12
>>jensgram 25/05-2007 09:48:34

-- selvfølgelig !-)
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester