Class IBANValidator


  • public class IBANValidator
    extends java.lang.Object
    IBAN Validator.

    Checks an IBAN for:

    • country code prefix
    • IBAN length
    • pattern (digits and/or uppercase letters)
    • IBAN Checkdigits (using IBANCheckDigit)
    The class does not perform checks on the embedded BBAN (Basic Bank Account Number). Each country has its own rules for these.

    The validator includes a default set of formats derived from the IBAN registry at https://www.swift.com/standards/data-standards/iban.

    This can get out of date, but the set can be adjusted by creating a validator and using the setValidator(String, int, String) or setValidator(Validator) method to add (or remove) an entry.

    For example:

     IBANValidator ibv = new IBANValidator();
     ibv.setValidator("XX", 12, "XX\\d{10}")
     

    The singleton default instance cannot be modified in this way.

    Since:
    1.5.0
    • Constructor Detail

      • IBANValidator

        public IBANValidator()
        Create a default IBAN validator.
      • IBANValidator

        public IBANValidator​(IBANValidator.Validator[] validators)
        Create an IBAN validator from the specified map of IBAN formats.
        Parameters:
        validators - map of IBAN formats
    • Method Detail

      • getInstance

        public static IBANValidator getInstance()
        Gets the singleton instance of the IBAN validator using the default formats
        Returns:
        A singleton instance of the IBAN validator
      • getValidator

        public IBANValidator.Validator getValidator​(java.lang.String code)
        Gets the Validator for a given IBAN
        Parameters:
        code - a string starting with the ISO country code (for example, an IBAN)
        Returns:
        the validator or null if there is not one registered.
      • hasValidator

        public boolean hasValidator​(java.lang.String code)
        Does the class have the required validator?
        Parameters:
        code - the code to check
        Returns:
        true if there is a validator
      • isValid

        public boolean isValid​(java.lang.String code)
        Validate an IBAN Code
        Parameters:
        code - The value validation is being performed on
        Returns:
        true if the value is valid
      • setValidator

        public IBANValidator.Validator setValidator​(java.lang.String countryCode,
                                                    int length,
                                                    java.lang.String format)
        Installs a validator. Will replace any existing entry which has the same countryCode.
        Parameters:
        countryCode - the country code
        length - the length of the IBAN. Must be ≥ 8 and ≤ 32. If the length is < 0, the validator is removed, and the format is not used.
        format - the format of the IBAN (as a regular expression)
        Returns:
        the previous Validator, or null if there was none
        Throws:
        java.lang.IllegalArgumentException - if there is a problem
        java.lang.IllegalStateException - if an attempt is made to modify the singleton validator
      • setValidator

        public IBANValidator.Validator setValidator​(IBANValidator.Validator validator)
        Installs a validator. Will replace any existing entry which has the same countryCode
        Parameters:
        validator - the instance to install.
        Returns:
        the previous Validator, or null if there was none
        Throws:
        java.lang.IllegalStateException - if an attempt is made to modify the singleton validator