JSFiddle - React, Tailwind, and code Playground

by cjblomqvist

HTML

<body></body>

JavaScript

function personnummer(nr){
    
    nr = nr.replace(/[-\s]/gi, "");
    
    if( !nr.match( /^(\d{10})$/ ) ) {
        
        return false;
        
    }
    
    nr = RegExp.$1;
    
    sChecksum = String( nr.substr( 0, 1 ) * 2 ) + String( nr.substr( 2, 1 ) * 2 ) + String( nr.substr( 4, 1 ) * 2 ) + String( nr.substr( 6, 1 ) * 2 ) + String( nr.substr( 8, 1 ) * 2 );
    
    $('body').append('<p style="color: red;">' + sChecksum + '</p>' );
    
    checksum = 0;
    
    for( var n = 0; n < sChecksum.length; n++ ) {
        
        checksum += parseInt( sChecksum.substr( n, 1 ) );
        
    }
    
    checksum += parseInt( nr.substr( 1, 1 ) ) + parseInt( nr.substr( 3, 1 ) ) + parseInt( nr.substr( 5, 1 ) ) + parseInt( nr.substr( 7, 1 ) );
    
    $('body').append('<p style="color: red;">' + checksum + '</p>' );
    
    return ( ( ( checksum % 10 == 0 ? 0 : 10 ) - checksum % 10 ) == nr.substr( 9, 1 ) );
    
}

$('body').append('<p>8702253330: ' + personnummer('8702253330') + '</p>' );
$('body').append('<p>8707075613: ' + personnummer('8707075613') + '</p>' );