Avatar billede hehe7777 Nybegynder
03. december 2008 - 15:47 Der er 4 kommentarer og
1 løsning

Validering af heltal

Jeg skal validere på et heltal. Det må IKKE være 1..65535.
Jeg er selv kommet frem til følgende som fungerer sålænge der højst er 5 karakterer.


^([^1-9] | [^[1-9][0-9]] | [^[1-9][0-9][0-9 ]] | [^[1-9][0-9][0-9][0-9]] | [^5[0-9][0-9][0-9][0-9]] | [^6[0-4][0-9][0-9][0-9]] | [^65[0-4][0-9][0-9]] | [^655[0-2][0-9]] | 6553[^0-5] )$

når jeg prøver med f.eks 655351 så returnerer den ingen match :(

Er der nogle RegEx hajer der kan se hvordan den skal se ud?
Den skal returnere mindst en match på alle heltal undtagen på 1..65535.
Avatar billede d_v Nybegynder
15. januar 2009 - 22:12 #1
Vil så mene regex måske ikke er den helt rigtige løsning, eventuelt en blanding i stil med:

regex: [0-9]{1,6}
resultatet af den laver du så en if på: if (value <= 65535)


Det er ihverfald måden hvorpå jeg vil gøre det.
Avatar billede olebole Juniormester
15. januar 2009 - 22:25 #2
<ole>

Nej, det går nok ikke. RegExp kan bruges til at finde mønstre i tekststrenge - ikke i tal. Derfor kan man ikke bruge RegExp og aritmetisk sammenligning på samme størrelse.

Hvis vi f.eks. taler JavaScript, kunne man:

var tal = 12345; // kommer et eller andet sted fra
if (tal>65535 && String(tal).length<6) {
    // Godkendt
}

/mvh
</bole>
Avatar billede hehe7777 Nybegynder
16. januar 2009 - 13:19 #3
Tak for jeres indlæg.

Jeg klarede på følgende måde C# kode:

string value = 12345; //indlæst værdi fra en settings fil
string match = ^([1-9]|[1-9][0-9]|[1-9][0-9][0-9 ]|[1-9][0-9][0-9][0-9]|[1-5][0-9][0-9][0-9][0-9]|6[0-4][0-9][0-9][0-9]|65[0-4][0-9][0-9]|655[0-2][0 -9]|6553[0-5])$; //indlæst fra en mappingfil. Derfor jeg vælger RegEx. For at det skal være så fleksibelt som muligt.
Match m = Regex.Match(value, match);
  if (!m.Success)
  { //Godkendt
men smid et svar hver, så prøver jeg om jeg kan dele pointene mellem jer

//hehe7777
Avatar billede d_v Nybegynder
16. januar 2009 - 15:22 #4
Mit svar her.
Avatar billede d_v Nybegynder
19. januar 2009 - 20:00 #5
Ville ole ikke have nogen point ?
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