Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Validering av personnummer/modulus kontroll

601 views
Skip to first unread message

Per Simonsen

unread,
Aug 13, 2002, 8:34:41 AM8/13/02
to
Er det noen som har et script for validering av norske personnummer
vha. modulus11 kontroll?

Per Simonsen

Arnulf Sortland

unread,
Aug 13, 2002, 3:04:16 PM8/13/02
to
"Per Simonsen" <per....@netcom.no> wrote in message news:3D58F9CD...@netcom.no...

> Er det noen som har et script for validering av norske personnummer
> vha. modulus11 kontroll?
>
> Per Simonsen

<html>
<head>
<script>
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
// Sjekksifferene i fødselsnummeret regnes ut etter modulus 11.
// Portet fra pascal til js - Arnulf Sortland - http://sa.no/
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
function GyldigPersNr(Streng)
{
var T = new Array(11);

document.writeln('Sjekker personnummer: '+ Streng );
if( Streng.length != 11) // Feil lengde
{
// document.writeln('Feil lengde');
return -3;
}
for(i=0; i<11; i++) // Konverter til array of int
{
T[i] = Streng.charCodeAt(i)-48;
// document.writeln( T[i] );
}
Sum = ( T[0] * 3 + T[1] * 7 + T[2] * 6 + T[3] + T[4] * 8 + T[5] * 9
+ T[6] * 4 + T[7] * 5 + T[8] * 2 ) % 11;
if( Sum != 0)
{
Sum = 11 - Sum;
}
// document.writeln('<br> Chk1: '+ Sum );
if( T[9] != Sum) // første kontrollsiffer er feil
{
// document.writeln('første kontrollsiffer er feil');
return -1;
}
Sum = ( T[0] * 5 + T[1] * 4 + T[2] * 3 + T[3] * 2 + T[4] * 7 + T[5] * 6
+ T[6] * 5 + T[7] * 4 + T[8] * 3 + T[9] * 2) % 11;
if( Sum != 0 )
{
Sum = 11 - Sum;
}
// document.writeln('<br> Chk2: '+ Sum );
if( T[10] != Sum ) // andre kontrollsiffer er feil
{
// document.writeln('andre kontrollsiffer er feil');
return -2;
}
return 1;
}

function PrintError(ret )
{
switch( ret )
{
case 1:
document.writeln('Personnummer Ok !<br>');
break;
case -1:
document.writeln('første kontrollsiffer er feil<br>');
break;
case -2:
document.writeln('andre kontrollsiffer er feil<br>');
break;
case -3:
document.writeln('Feil lengde<br>');
break;
case -4:
document.writeln('Feil i dato<br>');
break;
case -5:
document.writeln('Personnummer &gt; 500<br>');
break;
default:
document.writeln('Error: '+ret+'<br>');
}
}
</script>
</head>

<body>

<script>
document.writeln('Det vert ikke sjekket for gyldig dato<br>');
document.writeln('Heller ikke om personnr &lt; 500 <p>');

PrintError( GyldigPersNr('020813512') );
PrintError( GyldigPersNr('02081351221') );
PrintError( GyldigPersNr('02081351212') );
PrintError( GyldigPersNr('02081351220') );
</script>

</body>
</html>


Arnulf Sortland

unread,
Aug 13, 2002, 3:37:37 PM8/13/02
to
For å finne ut om personnummer tilhører en mann eller kvinne
kan denne koden legges til på slutten av GyldigPersNr():

if( (T[8] % 2) == 0) {
document.writeln(' kvinne ')
}else{
document.writeln(' mann ');
}

arnulf @ http://sa.no

"Arnulf Sortland" <som...@sa.no> wrote in message news:QKc69.9611$sR2.1...@news4.ulv.nextra.no...

if( (T[8] % 2) == 0) {
return 1;
}else{
return 2;
}
}

function PrintError(ret )
{
switch( ret )
{
case 1:

document.writeln('Personnummer tilhører en kvinne !<br>');
break;
case 2:
document.writeln('Personnummer tilhører en mann !<br>');


break;
case -1:
document.writeln('første kontrollsiffer er feil<br>');
break;
case -2:
document.writeln('andre kontrollsiffer er feil<br>');
break;
case -3:
document.writeln('Feil lengde<br>');
break;
case -4:
document.writeln('Feil i dato<br>');
break;
case -5:
document.writeln('Personnummer &gt; 500<br>');
break;
default:
document.writeln('Error: '+ret+'<br>');
}
}
</script>
</head>

<body>

Det vert ikke sjekket for gyldig dato<br>


Heller ikke om personnr &lt; 500 <p>

<script>

Per Simonsen

unread,
Aug 14, 2002, 2:19:34 AM8/14/02
to

Tusen takk for hjelpen!

Per Simonsen


Morten Wang

unread,
Aug 14, 2002, 2:42:20 AM8/14/02
to
* Arnulf Sortland

> // Sjekksifferene i fødselsnummeret regnes ut etter modulus 11.
> // Portet fra pascal til js - Arnulf Sortland - http://sa.no/

eneste kommentaren jeg har er at følgende:

> for(i=0; i<11; i++) // Konverter til array of int
> {
> T[i] = Streng.charCodeAt(i)-48;
> // document.writeln( T[i] );
> }

efter min mening heller bør skrives:

for(var i = 0; i < 11; i++) {
T[i] = parseInt(Streng.charAt(i), 10);
}


Morten!

--
"If you don't know what your program is supposed to do,
you'd better not start writing it."
Spørsmål som sendes uoppfordret via mail kan ikke beregnes besvart.

alexandre

unread,
Sep 14, 2002, 6:11:00 AM9/14/02
to
http://ak47.est-ici.org/
"Per Simonsen" <per....@netcom.no> a écrit dans le message news:
3D58F9CD...@netcom.no...
0 new messages