BIC (Bank Identifier Code), также известный как SWIFT-код, представляет собой международный идентификатор финансовой организации. Он используется для маршрутизации банковских переводов и однозначного определения банка в глобальной платежной системе.
Формат BIC регламентирован стандартом ISO 9362 и имеет строго фиксированную структуру:
Общая длина: 8 или 11 символов Состав:
Пример корректного BIC:
DEUTDEFF — головной офис банкаDEUTDEFF500 — конкретный филиалПри проверке BIC учитываются следующие требования:
1. Длина строки
2. Регистрозависимость
3. Код страны
DE, FR, US,
KZ4. Код местоположения
5. Код филиала
Библиотека Validator.js предоставляет встроенную функцию для проверки BIC:
validator.isBIC(str)
Функция выполняет полную проверку соответствия стандарту SWIFT/BIC, включая:
import validator from 'validator';
validator.isBIC('DEUTDEFF'); // true
validator.isBIC('DEUTDEFF500'); // true
validator.isBIC('deutdeff'); // false (нижний регистр)
validator.isBIC('DEUTD1FF'); // false (недопустимые символы)
validator.isBIC('DEUTDE'); // false (неполная длина)
Хотя реализация скрыта внутри библиотеки, логика проверки эквивалентна следующим шагам:
Проверка длины строки (8 или 11 символов)
Проверка регулярным выражением
Валидация структуры:
[A-Z]{4} — банковский код[A-Z]{2} — код страны[A-Z0-9]{2} — код местоположения[A-Z0-9]{3}? — необязательный код филиалаЭквивалентное регулярное выражение:
^[A-Z]{4}[A-Z]{2}[A-Z0-9]{2}([A-Z0-9]{3})?$
1. Использование строчных букв
validator.isBIC('deutdeff'); // false
2. Неверная длина
validator.isBIC('DEUTDEFF50'); // false
3. Недопустимые символы
validator.isBIC('DEUTD@FF'); // false
4. Нарушение структуры страны
validator.isBIC('DEUTZZFF'); // формально допустимо, но код страны может быть несуществующим
Важно учитывать, что Validator.js проверяет только формат, а не существование банка или корректность кода страны как реального участника системы SWIFT.
При обработке банковских данных в backend-приложениях проверка BIC часто включается в цепочку валидации входных данных:
function validateBankData(data) {
const errors = [];
if (!validator.isBIC(data.bic)) {
errors.push('Некорректный BIC код');
}
return errors;
}
import validator from 'validator';
function bicValidationMiddleware(req, res, next) {
const { bic } = req.body;
if (!bic || !validator.isBIC(bic)) {
return res.status(400).json({
error: 'Invalid BIC format'
});
}
next();
}
В банковских системах BIC часто используется совместно с другими идентификаторами:
Пример комплексной проверки:
validator.isIBAN(iban);
validator.isBIC(bic);
Такой подход позволяет валидировать как счёт, так и банк-отправитель/получатель.
1. Формат ≠ существование Validator.js не выполняет запросов к SWIFT базе и не проверяет реальность банка.
2. Локальные ограничения Некоторые банки используют внутренние BIC-подобные коды, которые могут не проходить строгую проверку.
3. Чувствительность к регистру Стандарт требует верхний регистр, поэтому предварительная нормализация данных часто необходима:
bic = bic.toUpperCase();
4. Производительность Проверка BIC является лёгкой операцией O(1), так как основана на регулярном выражении и длине строки.
Некорректная реализация часто включает:
Корректная модель всегда рассматривает BIC как структурированный идентификатор фиксированного формата без семантической проверки существования.