webForumDet fria alternativet

nummer regexp

4 svar · 226 visningar · startad av Dino

DinoMedlem sedan sep. 20011 914 inlägg
#1

Har en sträng som kan se ut enligt följande varianter:

666556
665656
566656
565565
555665
556655
565655
556565
...

Alltså fyra siffror av en sort och två av en annan. Siffrorna kan vara mellan 2 och 9, men i en sträng så är det bara två olika siffror. Undrar då hur ett regexp skall se ut för att kolla om stängen är "true" (om det är fyra av en och två av en annan).

dectgapMedlem sedan sep. 20021 655 inlägg
#2

Jag skulle inte vilja ge mig på att utforma en regexp som kontrollerar en sådan sträng.

Istället kan du göra så här:

<script type="text/javascript">
tal = "545455";

if(/^[2-9]{6}$/.test(tal)){
  digit1 = false;
  digit2 = false;
  digit1occ = 0;
  digit2occ = 0;
  for(i=0; i<tal.length; i++){
    if(!digit1 || digit1==tal.charAt(i)){
      digit1 = tal.charAt(i);
      digit1occ++;
    }else if(!digit2 || digit2==tal.charAt(i)){
      digit2 = tal.charAt(i);
      digit2occ++;
    }
  }
  document.write("digit1="+digit1+"<br />");
  document.write("digit2="+digit2+"<br />");
  document.write("digit1occ="+digit1occ+"<br />");
  document.write("digit2occ="+digit2occ+"<br />");

  if((digit1occ==4 && digit2occ==2) || (digit1occ==2 && digit2occ==4))
    alert("talet är ok");
}
</script>

Du kan plocka bort document.write-raderna.
Om talet är sex tecken långt, bara innehåller två olika slags siffror som är mellan 2 och 9, och de två siffrorna förekommer 4 resp 2 gånger kommer meddelandet "talet är ok" upp.

DinoMedlem sedan sep. 20011 914 inlägg
#3

Funkar finfint. Tackar så mycket. :)

dectgapMedlem sedan sep. 20021 655 inlägg
#4

Jag märkte ett litet fel: strängen "4455556" (en giltig sträng med ett godtyckligt antal siffror efter) godkändes.

Nu är det dock fixat.

DinoMedlem sedan sep. 20011 914 inlägg
#5

Ok, tack igen. Den lilla ändringen hjälpte även för lite andra problem som dykt upp. :)

129 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
127 ms — hämta tråd, inlägg och bilagor (db)