Skip to content

Instantly share code, notes, and snippets.

@mfr
Created February 28, 2014 10:26
Show Gist options
  • Save mfr/9268716 to your computer and use it in GitHub Desktop.
Save mfr/9268716 to your computer and use it in GitHub Desktop.
/* Personnummer- och ålderkontroll V1.0
(C)David Lidström 2002
för Pellesoft.nu
Skapad: 2002-03-28
Senast ändrad: 2002-03-28*/
function PNR_IsValid(vVad) {
if( vVad.search(/\d\d\d\d-\d\d-\d\d-\d\d\d\d/) == 0 ) {
var d = new Date();
var vYear = parseInt(vVad.substr(0,4));
var vMonth = parseInt(vVad.substr(5,2));
var vDay = parseInt(vVad.substr(8,2));
if( vYear<1900 || vYear > d.getFullYear() ) return false; // Måste vara minst 1900, och inte högre än nuvarande årtal
if( vMonth<0 || vMonth > 12 ) return false; // Månaden måste vara mellan 1 och 12
if( vDay<0 || vDay > 31 ) return false; // Dagen måste vara mellan 1 och 31
return true;
}
return false;
}
function PNR_ControlAge(pNr, vMinimi) {
var s = pNr.split("-");
var d = new Date();
var cAge; // Personens faktiska ålder ( endast årtal )
cAge = d.getFullYear()-s[0];
if( parseInt(cAge)>parseInt(vMinimi)) {
return true;
} else if( cAge==vMinimi) {
// Årtalet är rätt, men har vi fyllt så mycket ännu?
if( (d.getMonth()+1)>= parseInt(s[1]) ) {
if( d.getDate()>= parseInt(s[2]) ) {
return true;
}
}
}
return false;
}
function PNR_GetLastNumber(vVad) { // En funktion som returnerar kontrollsiffran för ett personnummer
var ctrlPNR = new String(""); ctrlPNR = vVad.replace(/-/g, "").substr(2);
if( ctrlPNR.length == 10 ) { ctrlPNR = ctrlPNR.substr(0, ctrlPNR.length-1) }
a=0; sum="";
for( var n=0; n<ctrlPNR.length; n++) { a = 2; if(n%2) {a=1}; sum+="" + (parseInt(ctrlPNR.substr(n,1))*a) }; numericSum = 0;
for( var n=0; n<sum.length; n++) { numericSum+=parseInt(sum.substr(n,1)); }
var decInt = new Number( 0 )
decInt = numericSum.toString().substr(numericSum.toString().length-1);
if( decInt==10||decInt==0) {return 0;}
return 10-decInt;
}
function PNR_LastNumberIsValid(vPostnummer) { // En funktion som använder sig av ovanstående funktion för att kontrollera sista siffran
var vLastNummer = parseInt(vPostnummer.substr(vPostnummer.length-1));
return vLastNummer == PNR_GetLastNumber(vPostnummer);
}
// helper email address
function email_is_valid(value) {
// contributed by Scott Gonzalez: http://projects.scottsplayground.com/email_address_validation/
return /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i.test(value);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment