Avatar billede frets Nybegynder
16. februar 2006 - 23:46 Der er 12 kommentarer og
1 løsning

Minimum antal

Hvordan laver jeg en regex hvor tallet skal være over eks. 15, altså 0 til 14 ikke godtages, men 15 til 9999+ gør?
Avatar billede olebole Juniormester
16. februar 2006 - 23:52 #1
<ole>

Det skal du ikke bruge RegExp til. Afhængigt af sproget (her er JavaScript) kan du skrive:
    if (x>14) {
        alert("Tallet er større end 14");
    }

/mvh
</bole>
Avatar billede frets Nybegynder
16. februar 2006 - 23:56 #2
Det ville bare umiddelbart være det nemmeste, da jeg bruger System.Web.UI.WebControls.DomValidators i asp.net, eller hvad?
Avatar billede olebole Juniormester
17. februar 2006 - 00:06 #3
Det er ikke spørgsmålet om, hvad der er lettest for dig - men for klienten/applikationen ... og RegExp er jo ikke ligefrem en let tante at danse med  ;o)
Avatar billede frets Nybegynder
17. februar 2006 - 00:12 #4
System.Web.UI.WebControls.DomValidators bygger en js funktion, så det hele sker clientside. Derfor ville det være rart hvis man kunne lave det i en regex.
Avatar billede olebole Juniormester
17. februar 2006 - 00:14 #5
Hvorfor ville det være rart?
Avatar billede frets Nybegynder
17. februar 2006 - 00:19 #6
For så sker al validering samlet et sted.
Jeg bruger domvalidationsummery, som laver en liste over de felter som ikke er udfyldt. Jeg bruger denne: http://www.users.bigpond.com/conceptdevelopment/Validation/DOMValidator/
Avatar billede frets Nybegynder
17. februar 2006 - 00:20 #7
Ligeledes kan jeg tjekke at man kun indtaster tal i feltet.
Avatar billede olebole Juniormester
17. februar 2006 - 00:26 #8
Ja, det er nu skønt at have kontrol over koden ... anyway, så kan du ikke validere på den måde med RegExp. Du kan validere mønstre med RegExp (f.eks. antal af ciffre i et tal) ... ikke værdier
Avatar billede tjp Mester
17. februar 2006 - 03:21 #9
>> olebole
Der bliver jeg desværre nødt til at sige dig imod - regexp kan godt tjekke værdier, de kan sågar tjekke om et tal er deleligt med et andet.

Et bud på det ønskede kunne være nedenstående funktion som kaldes med strengen der indeholder værdien og returnerer et svar. Svaret kan selvfølgelig skiftes ud med en boolean som nok vil være mere brugbar.

function tjekAntal(str){
  var re1 = /^1[5-9]|[2-9][0-9]|[1-9][0-9][0-9]+$/;
  var re2 = /^-?[0-9]+$/;
  if (re2.test(str))
    if (re1.test(str)){
      return str+" er ok"; 
    }
    else {
      return str+" er mindre end 15";
    }
  else {
    return str+" er ikke et tal";
  }
}
Avatar billede olebole Juniormester
17. februar 2006 - 05:09 #10
- har du ret - eller tager jeg fejl?  *lyden af midaldrende herre, fortærende sin laptop*  :D

- selvfølgelig kan man da det. Den vej rundt (re1) har jeg ikke tænkt brugen ... mindes ikke at have set den - og i så fald overset den. Men det er jo højtlæsning for pygmæer  :)

Det ændrer dog ikke ved, at jeg finder det noget af en mother at drible igang  for en helt simpel betingelse.

Nu skal jeg absolut ikke gøre mig klog på .net, men jeg kan se, der er tale om en custom-versionering af en MS-kontrol. Mon ikke den indeholder en klasse, tilsvarende denne:
    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfSystemWebUIWebControlsCustomValidatorClassTopic.asp
Avatar billede frets Nybegynder
21. februar 2006 - 16:54 #11
Tak for hjælpen.
Det ser ud til at være nok med /^1[5-9]|[2-9][0-9]|[1-9][0-9][0-9]+$/;
Avatar billede tjp Mester
21. februar 2006 - 21:09 #12
Velbekomme.
'/^-?[0-9]+$/;' var med for at kunne skelne mellem minustal og input der ikke er tal.
Avatar billede frets Nybegynder
23. februar 2006 - 16:38 #13
Ok. Kan det smeltes sammen i et expression?
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