webForumDet fria alternativet

Lägg till bindestreck i personnummer

ASP

4 svar · 799 visningar · startad av Oputres

Medlem sedan feb. 2004333 inlägg
Frågan#1

Allå!

Jag skulle vilja kontrollera om användaren skrivit sitt personnummer med ett bindesträck och om denne inte gjort det lägga till ett. Eller alternativt att jag tar bort det innan jag lägger till det i databasen (det vet jag hur man gör) och sedan lägger till ett varje gång jag visar personnumret, fast jag föredrar nog det första alternativet.

Medlem sedan juli 200543 inlägg
#2

Är de bara jag eller skriver man inte sitt personnummer med 2 bindesträck?
Med RegExp Kan du göra en validering !

Function IsDigits(strValue)
With New RegExp
.Pattern = "^[\d+]-[\d+]-[\d+]$"
IsDigits = .Test(strValue)
End With
End Function

Sen kollar du såhär:
If not IsDigits(Request.Form.Item("Personnmr")) Then
'din lilla kod för att lägga till bindesträck..
End If

Medlem sedan maj 200591 inlägg
#3

Detta borde funka på ett ungefär.

Set re = New RegExp
re.Global = true
re.Pattern = "(\d{6})(\d{4})"
personnummer = re.Replace(personnummer,"$1-$2")
Set re = Nothing

Medlem sedan jan. 2003438 inlägg
#4

Lånade lite från Guffa.com

Kan även göra så här för att kontrollera, använde även Baltiz lösning:

Function CheckNumber(ByVal strNumber)
   ' deklarera variabler
   Dim lngSum, lngTemp, lngPos

   ' kontrollera formatet
   With New RegExp
      .Pattern = "^\d{2}-?\d{2}-?\d{2}-?\d{4}$"
      If not .Test(strNumber) Then
         CheckNumber = False
         Exit function
      End If
   End With

   ' ta bort eventuella bindestreck
   strNumber = Replace(strNumber,"-","")

   ' beräkna checksumman
   lngSum = 0
   For lngPos = 1 to 10
      lngTemp = CLng(Mid(strNumber, lngPos, 1)) * ((lngPos mod 2) + 1)
      If lngTemp > 9 Then lngTemp = lngTemp - 9
      lngSum = lngSum + lngTemp
   Next

  ' kontrollera checksumman
  CheckNumber = (lngSum mod 10) = 0
End Function

strPersonnr = "690101-3901"

If CheckNumber(strPersonnr) Then
   Set re = New RegExp
   re.Global = true
   re.Pattern = "(\d{6})(\d{4})"
   personnummer = re.Replace(strPersonnr,"$1-$2")
   Set re = Nothing
   Response.Write personnummer
Else
   Response.Write "Personnumret är inte korrekt."
End If
Medlem sedan feb. 2004333 inlägg
#5

Snyggt, det blir bara bättre och bättre! :)

254 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
128 ms — deklarationer (db)
0 ms — hämta statistik (cache)
123 ms — hämta tråd, inlägg och bilagor (db)
125 ms — ändringar (db)