ru-codes - один из модулей node.js для проверки корректности ввода ИНН, КПП, ОГРН[ИП] и СНИЛС.
Особенности:
- итог проверки представлен не результатом функции (который в случае успеха всегда
undefined
), а объектом Error с дополнительными полями; - в реализации не используются ни регулярные выражения, ни текстовые операции с подстроками.
npm install ru-codes
const {
isINN10,
isINN12,
isKPP,
isOGRN13,
isOGRN15,
isSNILS,
// scalarProduct,
// digit,
} = require ('ru-codes')
try {
isSNILS (s)
}
catch (err) {
switch (err.code) {
case 'type':
// err.type -- это typeof аргумента, оказавшийся не string
case 'length':
// err.tobe -- требуемая длина строки
// err.asis -- реальная длина строки
case 'char':
// err.value -- символ не попавший в интервал '0'..'9'
// err.pos -- позиция этого символа (от 0)
case 'checksum':
// err.tobe -- контрольная сумма, вычисленная по основной части строки
// err.asis -- значение контрольной суммы, прочитанное непосредственно из строки
// err.phase -- для isINN12: номер контрольной суммы (1 или 2)
default:
throw err
}
}
Каждая из функций, описанных в данном разделе, принимает на вход проверяемый код в виде строки (не числа или иного объекта), состоящей только из цифр от '0' до '9'. Если проверка проходит успешно, исполнение функции завершается без результата, иначе генерируется ошибка.
Реализованы только проверки форматов и контрольных сумм, но не чего-либо, связанного с внешними источниками данных (наборы кодов регионов, отделений ФНС, ЕГРЮЛ и т. п.)
Реализованы все проверки через вызовы нижеописанных scalarProduct
и digit
.
Проверяет, может ли аргумент быть ИНН юридического лица.
Проверяет, может ли аргумент быть ИНН физического лица.
Проверяет, может ли аргумент быть КПП. Поскольку для КПП не предусмотрена контрольная сумма, проверяется только длина и набор символов.
Проверяет, может ли аргумент быть ОГРН.
Проверяет, может ли аргумент быть ОГРНИП.
Проверяет, может ли аргумент быть СНИЛС. Как и в остальных функциях is...
, на вход должна подаваться строка только из цифр, без дополнительных символов форматирования.
Для заданной строки str
, состоящей из только из цифр, и номера позиции pos
возвращает число, соответствующее цифре, занимающей данную позицию (без создания промежуточной подстроки и вызова parseInt
).
Используется функциями is...
для чтения контрольных чисел.
Для заданного массива чисел coef
и строки str
:
- гарантирует, что
str
является строкой такой же длины, чтоcoef
, и состоящей только из цифр; - возвращает скалярное произведение
coef
на массив чисел, соответствующих отдельным цифрамstr
.
На старте str
преобразуется в буфер -- и это единственный объект, создаваемый по ходу неаварийного исполнения функции: все остальные операции -- числовые.
Используется функциями is...
для:
- общей проверки формата;
- одновременного вычисления контрольных сумм.