NumberF.Validation (NumberF v0.3.0)

Copy Markdown View Source

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

card_brand(number)

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

is_valid_credit_card?(number, type \\ :any)

Validates credit card numbers using the Luhn algorithm.

is_valid_integer?(str)

Checks if a string is a valid integer.

is_valid_number?(str)

Checks if a string is a valid number format.

luhn_check_digit(partial)

Computes the Luhn check digit for a number that does not yet have one.

Examples

iex> NumberF.Validation.luhn_check_digit("411111111111111")
1

valid_currency_code?(code)

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

valid_ean?(code)

Validates an EAN-8 or EAN-13 barcode checksum.

Examples

iex> NumberF.Validation.valid_ean?("4006381333931")
true

iex> NumberF.Validation.valid_ean?("4006381333932")
false

valid_iban?(iban)

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

valid_imei?(imei)

Validates a 15-digit IMEI, which uses the Luhn checksum.

Examples

iex> NumberF.Validation.valid_imei?("490154203237518")
true

valid_isbn?(isbn)

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

valid_luhn?(number)

Validates any Luhn-checksummed number, not just payment cards.

Examples

iex> NumberF.Validation.valid_luhn?("4111111111111111")
true

iex> NumberF.Validation.valid_luhn?("4111111111111112")
false

valid_percentage?(value)

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

valid_routing_number?(number)

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

valid_upc?(code)

Validates a 12-digit UPC-A barcode checksum.

Examples

iex> NumberF.Validation.valid_upc?("036000291452")
true