×

Проверка СНИЛС с помощью JavaScript

Сейчас всё чаще и чаще для доступа к сайтам как-либо связанным с государством требуется вспоминать свой номер страхового свидетельства, он же СНИЛС. Номер этот можно проверить на корректность, также как и ИНН и ОГРН.

Формула проверки очень простая: берём первые девять цифр высчитываем сумму всех произведений каждой цифры на номер с конца. Т.е. первую цифру умножаем на 9, вторую на 8 и т.д. Полученную сумму сравниваем с последними двумя цифрами – если совпало – всё правильно. Единственный нюанс это если получилась сумма больше ста, но там надо либо сравнивать с нулём, либо с остатком от деления на 101.

Все эти манипуляции можно записать в одну функцию:

function checkSnils(checkedValue,fieldName){   
    var checkSum = parseInt(checkedValue.slice(9),10);
     
    //строка как массив(для старых браузеров)
    checkedValue = "" + checkedValue;
    checkedValue = checkedValue.split('');
     
    var sum = (checkedValue[0]*9 + checkedValue[1]*8 + checkedValue[2]*7 + checkedValue[3]*6 + checkedValue[4]*5 + checkedValue[5]*4 + checkedValue[6]*3 + checkedValue[7]*2 + checkedValue[8]*1);
     
    if(sum < 100 && sum == checkSum){
        return true;
    }else if((sum == 100 || sum == 101) && checkSum == 0){
        return true;
    }else if(sum > 101 && (sum%101 == checkSum || (sum%101 == 100 && checkSum == 0))){
        return true;
    }else{
        return false;
    }
}

Вот и вся проверка =) Переделать этот же код для php вообще тривиальная задача, если кому понадобится и он не догадается как это делать — могу выложить.

logo