NRB (Numer Rachunku Bankowego ) to 26-cyfrowy krajowy numer rachunku bankowego w Polsce, weryfikowany przy użyciu sumy kontrolnej MOD-97 ze standardu IBAN. NRB jest strukturalnie częścią numeryczną polskiego IBAN (tj. IBAN bez prefiksu PL).
import { Numerik } from ' @slashlab/numerik-js '
Numerik . nrb () . isValid ( ' 61102010260000000000000000 ' ) // true
// Format z odstępami jest akceptowany
Numerik . nrb () . isValid ( ' 61 1020 1026 0000 0000 0000 0000 ' ) // true
// Format z prefiksem IBAN jest też akceptowany
Numerik . nrb () . isValid ( ' PL61102010260000000000000000 ' ) // true
const result = Numerik . nrb () . validate ( ' 61102010260000000000000000 ' )
// Parsowanie do obiektu z danymi
const nrb = Numerik . nrb () . parse ( ' 61102010260000000000000000 ' )
// Null zamiast wyjątku w przypadku błędu
const maybe = Numerik . nrb () . tryParse ( ' bad-input ' ) // null
parse() i tryParse() zwracają instancję Nrb.
Metoda Typ zwracany Opis getRaw()stringOryginalne dane wejściowe, bez zmian. getNormalized()string26 cyfr, bez prefiksu i spacji. toString()stringAlias dla getNormalized().
Metoda Typ zwracany Opis getFormatted()stringCzytelna postać: CC NNNN NNNN NNNN NNNN NNNN NNNN. getIban()stringPełny polski IBAN: PL + 26 cyfr. getFormattedIban()stringCzytelny IBAN: PLCC NNNN NNNN NNNN NNNN NNNN NNNN.
Metoda Typ zwracany Opis getCheckDigits()stringPierwsze 2 cyfry — cyfry kontrolne MOD-97. getSortCode()stringCyfry 2–9 (8 cyfr) — kod sortowania banku. getBankCode()stringCyfry 2–4 (3 cyfry) — identyfikator banku. getAccountNumber()stringCyfry 10–25 (16 cyfr) — numer rachunku klienta.
const nrb = Numerik . nrb () . parse ( ' 61102010260000000000000000 ' )
nrb . getRaw () // '61102010260000000000000000'
nrb . getNormalized () // '61102010260000000000000000'
nrb . getFormatted () // '61 1020 1026 0000 0000 0000 0000'
nrb . getIban () // 'PL61102010260000000000000000'
nrb . getFormattedIban () // 'PL61 1020 1026 0000 0000 0000 0000'
nrb . getCheckDigits () // '61'
nrb . getSortCode () // '10201026'
nrb . getBankCode () // '102'
nrb . getAccountNumber () // '0000000000000000'
Powód Wartość Warunek InvalidLengthinvalid_lengthDane wejściowe nie mają dokładnie 26 cyfr po normalizacji. InvalidCharactersinvalid_charactersObecne są znaki inne niż cyfry, spacje i opcjonalny prefiks PL. InvalidChecksuminvalid_checksumSuma kontrolna MOD-97 nie zgadza się.
Używa algorytmu MOD-97 z normy ISO 13616 (standard IBAN):
Odrzuć dane wejściowe dłuższe niż 40 znaków. Usuń spacje i myślniki oraz opcjonalny prefiks PL.
Sprawdź, czy pozostało dokładnie 26 cyfr.
Przestaw: przesuń pierwsze 2 cyfry (cyfry kontrolne) na koniec i wstaw numeryczny kod kraju dla Polski (2521) między pozostałe 24 cyfry a nimi, tworząc 30-cyfrowy ciąg.
Oblicz 30-cyfrowy ciąg modulo 97. Wynik musi wynosić 1.