Skip to content

Conversation

@alexanbj
Copy link
Contributor

@alexanbj alexanbj commented Feb 26, 2025

Denne PRen følger opp #31, og legger til støtte for validering av svenske personnummer.

Det er inkludert støtte for samordningsnummer, som er omtrent det samme som D-nummer i Norge.

Et svensk personnummer valideres med MOD10/Luhns algoritme. Så det er implementert her. (Brukes også til validere blant annet norske kid-nummer og svenske orgnummer, så dette får vi bruk for andre steder også).

Som vanlig har Sverige flere formater... Ofte brukes 10 siffer i det daglige, mens 12 siffer brukes til for eksempel lagring i svenske skatteverket, se Wikipedia.

Implementasjonen her støtter begge by default, men du kan skru på dette med en option, format

// short
validatePersonalIdentityNumber('YYMMDDXXXX') // true
// long
validatePersonalIdentityNumber('YYYYMMDDXXXX') // true
// validate short format
validatePersonalIdentityNumber('YYYYMMDDXXXX', { format: 'short' ) // false

I tillegg så kan svenske personnummer formateres med en separator, men separatoren har signifikans. Til vanlig benyttes YYMMDD-XXXX, men dersom personen er over 100 år endres - til en +, altså YYMMDD+XXXX. Dermed kan man lese av århundre i personnummeret selv om det bare er satt av to siffer til år i 10-siffer versjonen.

Dette er interessant, for det gjør at APIet man har brukt på de andre valideringsmetodene kanskje ikke helt passer til denne metoden. Alle metodene har en option, allowFormatting. Tanken var at den skulle brukes for å strippe vekk diverse forskjellige formatering av feks telefonnummer, eller om et kontonummer har blitt formatert med space eller punktum.

For at et personnummer på formatet YYMMDD-XXXX skal validere må man altså bruke metoden slik:

validatePersonalIdentityNumber('YYMMDD-XXXX', { allowFormatting: true })

Jeg er ikke helt sikker på hva jeg synes om det. Så tar gjerne innspill. Ønsker vi at vi skal prøve å holde det likt for alle metoder, altså med allowFormatting?

Eller gir det mening at man endrer til feks allowSeparator for personnummer, men beholder allowFormatting feks på telefonnummer?

Her er forøvrig en fin resurss for å generere syntetiske personnummer for alle de fire formatene som vi støtter her 😄 https://fnr.mujaj.dev/

@alexanbj alexanbj force-pushed the swedish-national-identity-number branch from 6702720 to b2630bf Compare March 4, 2025 21:31
@alexanbj alexanbj requested review from a team March 4, 2025 21:53
@alexanbj alexanbj marked this pull request as ready for review March 4, 2025 21:53
Copy link
Contributor

@aulonm aulonm left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

veldig deilig, nå er du flink!

@alexanbj alexanbj merged commit af9ac11 into main Mar 5, 2025
1 check passed
@alexanbj alexanbj deleted the swedish-national-identity-number branch March 5, 2025 18:43
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants