Валидация и проверка контрольного числа СНИЛС
Описание
СНИЛС (страховой номер индивидуального лицевого счета) состоит из 11 цифр:
- 1-9-я цифры — любые цифры;
- 10-11-я цифры — контрольное число.
Маски ввода
- XXXXXXXXXXX — маска ввода без разделителей.
- XXX-XXX-XXX-XX — маска ввода с разделителями.
- XXX-XXX-XXX XX — маска ввода с разделителями и с отделением контрольного числа.
Алгоритм проверки контрольного числа
- Вычислить сумму произведений цифр СНИЛС (с 1-й по 9-ю) на следующие коэффициенты — 9, 8, 7, 6, 5, 4, 3, 2, 1 (т.е. номера цифр в обратном порядке).
- Вычислить контрольное число от полученной суммы следующим образом:
- если она меньше 100, то контрольное число равно этой сумме;
- если равна 100, то контрольное число равно 0;
- если больше 100, то вычислить остаток от деления на 101 и далее:
- если остаток от деления равен 100, то контольное число равно 0;
- в противном случае контрольное число равно вычисленному остатку от деления.
- Сравнить полученное контрольное число с двумя младшими разрядами СНИЛС. Если они равны, то СНИЛС верный.
Реализация на JavaScript
Исходный код доступен на GitHub по этой ссылке (функция validateSnils).
Реализация на PHP
Исходный код доступен на GitHub по этой ссылке (метод validateSnils).