![]() |
|
|
|
|
|
#1 |
|
Moderator
Registrerad: 2000-06-18
Inlägg: 4 199
Lösningar: 246 |
Personnummer-kontroll
Följande objekt kan användas för att kontrollera personnummer.
Kod:
function personnummer(nr){
this.valid=false;
if(!nr.match(/^(\d{2})(\d{2})(\d{2})\-(\d{4})$/)){ return false; }
this.now=new Date(); this.nowFullYear=this.now.getFullYear()+""; this.nowCentury=this.nowFullYear.substring(0,2); this.nowShortYear=this.nowFullYear.substring(2,4);
this.year=RegExp.$1; this.month=RegExp.$2; this.day=RegExp.$3; this.controldigits=RegExp.$4;
this.fullYear=(this.year*1<=this.nowShortYear*1)?(this.nowCentury+this.year)*1:((this.nowCentury*1-1)+this.year)*1;
var months = new Array(31,28,31,30,31,30,31,31,30,31,30,31);
if(this.fullYear%400==0||this.fullYear%4==0&&this.fullYear%100!=0){ months[1]=29; }
if(this.month*1<1||this.month*1>12||this.day*1<1||this.day*1>months[this.month*1-1]){ return false; }
this.alldigits=this.year+this.month+this.day+this.controldigits;
var nn="";
for(var n=0;n<this.alldigits.length;n++){ nn+=((((n+1)%2)+1)*this.alldigits.substring(n,n+1)); }
this.checksum=0;
for(var n=0;n<nn.length;n++){ this.checksum+=nn.substring(n,n+1)*1; }
this.valid=(this.checksum%10==0)?true:false;
this.sex=parseInt(this.controldigits.substring(2,3))%2;
}
Kod:
var pn=new personnummer("750624-6649");
if(pn.valid){
alert("Personnumret är giltigt.");
alert("Personens födelseår är "+pn.fullYear);
var sex=new Array("kvinna","man");
alert("Personen är "+sex[pn.sex]);
}
Egenskaper för personnummer-objektet är;
En enklare variant för organisationsnummer ser ut så här: Kod:
function organisationsnummer(nr){
this.valid=false;
if(!nr.match(/^(\d{1})(\d{5})\-(\d{4})$/)){ return false; }
this.group=RegExp.$1;
this.controldigits=RegExp.$3;
this.alldigits=this.group+RegExp.$2+this.controldigits;
if(this.alldigits.substring(2,3)<2){ return false }
var nn="";
for(var n=0;n<this.alldigits.length;n++){ nn+=((((n+1)%2)+1)*this.alldigits.substring(n,n+1)); }
this.checksum=0;
for(var n=0;n<nn.length;n++){ this.checksum+=nn.substring(n,n+1)*1; }
this.valid=(this.checksum%10==0)?true:false;
}
Diskutera scriptet.
__________________
/ Jojoxx "Always remember that you're unique and special, just like everyone else..." Senast redigerad av Jojoxx, 2005-02-28 klockan 18:22 |
|
|
|
![]() |
| Trådverktyg | |
| Visningsalternativ | |
|
|