creditcardutils
A general purpose javascript library for credit card number validation and formatting. Based on jondavidjohn/payform
and jquery.payment
. Usable in React Native and Node.
Supported card types:
- Visa
- MasterCard
- American Express
- Diners Club
- Discover
- UnionPay
- JCB
- Visa Electron
- Maestro
- Forbrugsforeningen
- Dankort
(Custom card types are also supported)
Installation / Usage
npm (Node and Browserify)
npm install creditcardutils --save
var creditcardutils = ; // Format input for card number creditcardutils; //=> returns formatted card number // Validate a credit card numbercreditcardutils; //=> true // Get card type from numbercreditcardutils; //=> 'visa'
API
General Formatting and Validation
creditcardutils.formatCardNumber(input)
Formats card numbers:
- Includes a space between every 4 digits
- Restricts input to numbers
- Limits to 16 numbers
- Supports American Express formatting
Example:
creditcardutils; //=>returns formatted card number
creditcardutils.validateCardNumber(number)
Validates a card number:
- Validates numbers
- Validates Luhn algorithm
- Validates length
Example:
creditcardutils; //=> true
creditcardutils.validateCardExpiry(month, year)
Validates a card expiry:
- Validates numbers
- Validates in the future
- Supports year shorthand
Example:
creditcardutils; //=> truecreditcardutils; //=> truecreditcardutils; //=> false
creditcardutils.validateCardCVC(cvc, type)
Validates a card CVC:
- Validates number
- Validates length to 4
Example:
creditcardutils; //=> truecreditcardutils; //=> truecreditcardutils; //=> truecreditcardutils; //=> false
creditcardutils.parseCardType(number)
Returns a card type. Either:
visa
mastercard
amex
dinersclub
discover
unionpay
jcb
visaelectron
maestro
forbrugsforeningen
dankort
The function will return null
if the card type can't be determined.
Example:
creditcardutils; //=> 'visa'creditcardutils; //=> null
creditcardutils.parseCardExpiry(string)
Parses a credit card expiry in the form of MM/YYYY, returning an object containing the month
and year
. Shorthand years, such as 13
are also supported (and converted into the longhand, e.g. 2013
).
creditcardutils; //=> {month: 3: year: 2025}creditcardutils; //=> {month: 5, year: 2004}
This function doesn't perform any validation of the month or year; use creditcardutils.validateCardExpiry(month, year)
for that.
Custom Cards
creditcardutils.cards
Array of objects that describe valid card types. Each object should contain the following fields:
// Card type, as returned by creditcardutils.parseCardType.type: 'mastercard'// Regex used to identify the card type. For the best experience, this should be// the shortest pattern that can guarantee the card is of a particular type.pattern: /^5[0-5]/// Array of valid card number lengths.length: 16// Array of valid card CVC lengths.cvcLength: 3// Boolean indicating whether a valid card number should satisfy the Luhn check.luhn: true// Regex used to format the card number. Each match is joined with a space.format: //g
When identifying a card type, the array is traversed in order until the card number matches a pattern
. For this reason, patterns with higher specificity should appear towards the beginning of the array.
Development
Please see CONTRIBUTING.md.