Rexact
Cheatsheet

Regex BIC / SWIFT code

Wikipedia's own ISO 9362 article, quoted verbatim in a Stack Overflow answer, gives a regex... with no start/end anchors. A blog post that walks through building a BIC regex step by step also starts from an overly permissive first draft: it allows 2 to 5 characters after the country code, when the standard allows exactly 2 or 5, never 3 or 4. Here's a pattern that fixes both points, compared against these two real attempts and a third that works correctly but rejects lowercase input - a limitation its own author acknowledges in the answer.

/^[A-Z]{6}[A-Z0-9]{2}(?:[A-Z0-9]{3})?$/i
passes 20/20 cases

Comparison of existing patterns

Implementation

const re = new RegExp("^[A-Z]{6}[A-Z0-9]{2}(?:[A-Z0-9]{3})?$", "i");
re.test(input);

Limits

  • Ne vérifie que la forme : ne consulte aucun registre SWIFT, ne garantit ni qu'une banque porte réellement ce code, ni que le code pays (positions 5-6) correspond à un pays ISO 3166-1 existant.
  • N'interprète pas la signification du second caractère du code de localisation (0 = BIC de test, 1 = participant passif, 2 = facturation inversée) : ce sont des conventions documentées par la norme, pas des contraintes de forme.
  • Le code branche de 3 caractères, quand il est absent, sous-entend le siège principal (« XXX » implicite) : ce motif accepte aussi bien la forme à 8 caractères que la forme à 11 explicitement terminée par « XXX », sans les distinguer.
  • N'exclut pas les combinaisons de code pays théoriquement inutilisées (par exemple un code qui ne correspond à aucun pays ISO 3166-1 ni à l'exception « XK » du Kosovo) : seule la forme (2 lettres) est vérifiée, pas la liste réelle des codes valides.

Related pages