Skip to content

Instantly share code, notes, and snippets.

@jkohlin
Created April 21, 2023 15:55
Show Gist options
  • Save jkohlin/ac19937b36b5fcfa0385666b114cb85a to your computer and use it in GitHub Desktop.
Save jkohlin/ac19937b36b5fcfa0385666b114cb85a to your computer and use it in GitHub Desktop.
validera personnummer
function validate(personnummer: string): boolean {
let isValid = false
const pnrRegex = new RegExp(/^(\d{6}|\d{8})(-?)(\d{4})/, 's')
const parts = pnrRegex.exec(personnummer)
personnummer = parts?.[1] || '' + parts?.[3] || ''
if (personnummer.length === 12) {
personnummer = personnummer.substring(2)
}
if (personnummer.length === 10) {
let sum = 0
const digits = personnummer.split('').map(Number)
for (let i = 0; i < digits.length; i++) {
if (i % 2 === 0) {
let double = digits[i] * 2
if (double > 9) {
double -= 9
}
sum += double
} else {
sum += digits[i]
}
}
if (sum % 10 === 0) {
isValid = true
}
}
return isValid
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment