23. maj 2007 - 10:04Der 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.
Hos Computerworld it-jobbank er vi stolte af at fortsætte det gode partnerskab med folkene bag IT-DAY – efter vores mening Danmarks bedste karrieremesse for unge og erfarne it-kandidater.
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 !-)
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.
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?
Ø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...
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 :)
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.