code: public static boolean isValidIBAN (@Nullable final String sIBAN, final boolean bReturnCodeIfNoCountryData)
    {
      // kick all non-IBAN chars
      final String sRealIBAN = unifyIBAN (sIBAN);
      if (sRealIBAN == null)
        return false;
  
      // is the country supported?
      final IBANCountryData aData = s_aIBANData.get (sRealIBAN.substring (0, 2));
      if (aData == null)
        return bReturnCodeIfNoCountryData;
  
      // Does the length match the expected length?
      if (aData.getExpectedLength () != sRealIBAN.length ())
        return false;
  
      // Are the checksum characters valid?
      if (!_isValidChecksumChar (sRealIBAN.charAt (2)) || !_isValidChecksumChar (sRealIBAN.charAt (3)))
        return false;
  
      // Is existing checksum valid?
      if (_calculateChecksum (sRealIBAN) != 1)
        return false;
  
      // Perform pattern check
      if (!aData.matchesPattern (sRealIBAN))
        return false;
  
      return true;
    }
docs: Check if the passed IBAN is valid and the country is supported!
  
  @param sIBAN
  The IBAN number string to check.
  @param bReturnCodeIfNoCountryData
  The return value if no country data is present for the specified
  IBAN.
  @return <code>true</code> if the IBAN is valid and supported.