Functions for validating various numeric formats and related data.
Summary
Functions
Identifies a card network from its number, by prefix and length.
Validates credit card numbers using the Luhn algorithm.
Checks if a string is a valid integer.
Checks if a string is a valid number format.
Computes the Luhn check digit for a number that does not yet have one.
Checks that a code is a currency this library knows about.
Validates an EAN-8 or EAN-13 barcode checksum.
Validates an IBAN using the ISO 13616 mod-97 checksum.
Validates a 15-digit IMEI, which uses the Luhn checksum.
Validates an ISBN-10 or ISBN-13, with or without separators.
Validates any Luhn-checksummed number, not just payment cards.
Checks that a value is a number in the 0..100 range.
Validates a US ABA routing number by its weighted checksum.
Validates a 12-digit UPC-A barcode checksum.
Functions
Identifies a card network from its number, by prefix and length.
Returns :visa, :mastercard, :amex, :discover, :diners, :jcb,
:unionpay, :maestro or :unknown. This is presentational — it does not
validate the number. Combine with is_valid_credit_card?/1.
Examples
iex> NumberF.Validation.card_brand("4111111111111111")
:visa
iex> NumberF.Validation.card_brand("5500000000000004")
:mastercard
iex> NumberF.Validation.card_brand("378282246310005")
:amex
iex> NumberF.Validation.card_brand("1234")
:unknown
Validates credit card numbers using the Luhn algorithm.
Checks if a string is a valid integer.
Checks if a string is a valid number format.
Computes the Luhn check digit for a number that does not yet have one.
Examples
iex> NumberF.Validation.luhn_check_digit("411111111111111")
1
Checks that a code is a currency this library knows about.
Examples
iex> NumberF.Validation.valid_currency_code?("USD")
true
iex> NumberF.Validation.valid_currency_code?("XYZ")
false
Validates an EAN-8 or EAN-13 barcode checksum.
Examples
iex> NumberF.Validation.valid_ean?("4006381333931")
true
iex> NumberF.Validation.valid_ean?("4006381333932")
false
Validates an IBAN using the ISO 13616 mod-97 checksum.
Edge cases
Checks structure and checksum only. A well-formed IBAN can still name an account that does not exist; only the receiving bank can confirm that.
Examples
iex> NumberF.Validation.valid_iban?("GB82 WEST 1234 5698 7654 32")
true
iex> NumberF.Validation.valid_iban?("GB82 WEST 1234 5698 7654 33")
false
Validates a 15-digit IMEI, which uses the Luhn checksum.
Examples
iex> NumberF.Validation.valid_imei?("490154203237518")
true
Validates an ISBN-10 or ISBN-13, with or without separators.
Examples
iex> NumberF.Validation.valid_isbn?("978-3-16-148410-0")
true
iex> NumberF.Validation.valid_isbn?("0-306-40615-2")
true
iex> NumberF.Validation.valid_isbn?("0-306-40615-3")
false
Validates any Luhn-checksummed number, not just payment cards.
Examples
iex> NumberF.Validation.valid_luhn?("4111111111111111")
true
iex> NumberF.Validation.valid_luhn?("4111111111111112")
false
Checks that a value is a number in the 0..100 range.
Examples
iex> NumberF.Validation.valid_percentage?(42.5)
true
iex> NumberF.Validation.valid_percentage?(101)
false
Validates a US ABA routing number by its weighted checksum.
Examples
iex> NumberF.Validation.valid_routing_number?("021000021")
true
iex> NumberF.Validation.valid_routing_number?("021000022")
false
Validates a 12-digit UPC-A barcode checksum.
Examples
iex> NumberF.Validation.valid_upc?("036000291452")
true