webForum webForum sponsras med lina och serverplats av Binero AB

Gå tillbaka   webForum > Artiklar och källkod > Källkod > Script - JavaScript, DHTML

Svar
 
Trådverktyg Visningsalternativ
Äldre 2002-05-12, 15:36   #1
Jojoxx
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;
}
Exempel:

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]);
}
Observera att du först alltid bör kontrollera att personnumret är giltigt (pn.valid) innan du försöker läsa egenskaper från objektet. Är personnumret inte giltigt sätts inte alla egenskaper. Det som kollas är måndad (01-12), dag beroende på månad (01-xx) samt kontrollsiffran i de 4 sista sifforna. (Personnumret i exemplet är påhittat).

Egenskaper för personnummer-objektet är;

  • pn.valid - Giltigt personnummer eller inte (true/false).
  • pn.fullYear - Personens födelseår (yyyy).
  • pn.year - Samma som ovan (yy).
  • pn.month - Personens födelsemånad (mm).
  • pn.day - Personens födelseday (dd).
  • pn.controldigits - De sista 4 siffrorna i personnumret (nnnn).
  • pn.alldigits - Alla siffrorna i personnummret i en följd (yymmddnnnn).
  • pn.sex - Personens kön (0=kvinna, 1=man).

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;
}
Fungerar i övrigt på samma sätt som personnummer-objektet. För mer information om organisationsnummer, se RSVs sida http://www.rsv.se/



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
Jojoxx besöker inte forumet just nu   Svara med citat
Svar
webForum > Artiklar och källkod > Källkod > Script - JavaScript, DHTML

Trådverktyg
Visningsalternativ

Forumregler
Du får inte posta nya trådar
Du får inte posta svar
Du får inte bifoga filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är av
HTML-kod är av

Forumhopp


Alla tider är i GMT +1. Klockan är nu 07:03.


Powered by: vBulletin Version 3.8.6
Copyright © webForum