Class CreditCardValidator
- java.lang.Object
-
- org.apache.commons.validator.routines.CreditCardValidator
-
- All Implemented Interfaces:
java.io.Serializable
public class CreditCardValidator extends java.lang.Object implements java.io.SerializablePerform credit card validations.By default, all supported card types are allowed. You can specify which cards should pass validation by configuring the validation options. For example,
CreditCardValidator ccv = new CreditCardValidator(CreditCardValidator.AMEX + CreditCardValidator.VISA);configures the validator to only pass American Express and Visa cards. If a card type is not directly supported by this class, you can create an instance of the
CodeValidatorclass and pass it to aCreditCardValidatorconstructor along with any existing validators. For example:CreditCardValidator ccv = new CreditCardValidator( new CodeValidator[] { CreditCardValidator.AMEX_VALIDATOR, CreditCardValidator.VISA_VALIDATOR, new CodeValidator("^(4)(\\d{12,18})$", LUHN_VALIDATOR) // add VPAY };Alternatively you can define a validator using the
CreditCardValidator.CreditCardRangeclass. For example:CreditCardValidator ccv = new CreditCardValidator( new CreditCardRange[]{ new CreditCardRange("300", "305", 14, 14), // Diners new CreditCardRange("3095", null, 14, 14), // Diners new CreditCardRange("36", null, 14, 14), // Diners new CreditCardRange("38", "39", 14, 14), // Diners new CreditCardRange("4", null, new int[] {13, 16}), // VISA } );This can be combined with a list of
CodeValidatorsMore information can be found in Michael Gilleland's essay Anatomy of Credit Card Numbers.
- Since:
- Validator 1.4
- Version:
- $Revision: 1782740 $
- See Also:
- Serialized Form
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classCreditCardValidator.CreditCardRangeClass that represents a credit card range.
-
Field Summary
Fields Modifier and Type Field Description static longAMEXOption specifying that American Express cards are allowed.static CodeValidatorAMEX_VALIDATORAmerican Express (Amex) Card Validatorstatic longDINERSOption specifying that Diners cards are allowed.static CodeValidatorDINERS_VALIDATORDiners Card Validatorstatic longDISCOVEROption specifying that Discover cards are allowed.static CodeValidatorDISCOVER_VALIDATORDiscover Card Validatorstatic longMASTERCARDOption specifying that Mastercard cards are allowed.static longMASTERCARD_PRE_OCT2016Deprecated.for use until Oct 2016 onlystatic CodeValidatorMASTERCARD_VALIDATORMastercard Card Validatorstatic CodeValidatorMASTERCARD_VALIDATOR_PRE_OCT2016Deprecated.for use until Oct 2016 onlystatic longNONEOption specifying that no cards are allowed.static longVISAOption specifying that Visa cards are allowed.static CodeValidatorVISA_VALIDATORVisa Card Validatorstatic longVPAYOption specifying that VPay (Visa) cards are allowed.static CodeValidatorVPAY_VALIDATORVPay (Visa) Card Validator
-
Constructor Summary
Constructors Constructor Description CreditCardValidator()Create a new CreditCardValidator with default options.CreditCardValidator(long options)Create a new CreditCardValidator with the specified options.CreditCardValidator(CodeValidator[] creditCardValidators)Create a new CreditCardValidator with the specifiedCodeValidators.CreditCardValidator(CodeValidator[] creditCardValidators, CreditCardValidator.CreditCardRange[] creditCardRanges)Create a new CreditCardValidator with the specifiedCodeValidators andCreditCardValidator.CreditCardRanges.CreditCardValidator(CreditCardValidator.CreditCardRange[] creditCardRanges)Create a new CreditCardValidator with the specifiedCreditCardValidator.CreditCardRanges.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description static CreditCardValidatorgenericCreditCardValidator()Create a new generic CreditCardValidator which validates the syntax and check digit only.static CreditCardValidatorgenericCreditCardValidator(int length)Create a new generic CreditCardValidator which validates the syntax and check digit only.static CreditCardValidatorgenericCreditCardValidator(int minLen, int maxLen)Create a new generic CreditCardValidator which validates the syntax and check digit only.booleanisValid(java.lang.String card)Checks if the field is a valid credit card number.java.lang.Objectvalidate(java.lang.String card)Checks if the field is a valid credit card number.
-
-
-
Field Detail
-
NONE
public static final long NONE
Option specifying that no cards are allowed. This is useful if you want only custom card types to validate so you turn off the default cards with this option.CreditCardValidator v = new CreditCardValidator(CreditCardValidator.NONE); v.addAllowedCardType(customType); v.isValid(aCardNumber);- See Also:
- Constant Field Values
-
AMEX
public static final long AMEX
Option specifying that American Express cards are allowed.- See Also:
- Constant Field Values
-
VISA
public static final long VISA
Option specifying that Visa cards are allowed.- See Also:
- Constant Field Values
-
MASTERCARD
public static final long MASTERCARD
Option specifying that Mastercard cards are allowed.- See Also:
- Constant Field Values
-
DISCOVER
public static final long DISCOVER
Option specifying that Discover cards are allowed.- See Also:
- Constant Field Values
-
DINERS
public static final long DINERS
Option specifying that Diners cards are allowed.- See Also:
- Constant Field Values
-
VPAY
public static final long VPAY
Option specifying that VPay (Visa) cards are allowed.- Since:
- 1.5.0
- See Also:
- Constant Field Values
-
MASTERCARD_PRE_OCT2016
@Deprecated public static final long MASTERCARD_PRE_OCT2016
Deprecated.for use until Oct 2016 onlyOption specifying that Mastercard cards (pre Oct 2016 only) are allowed.- See Also:
- Constant Field Values
-
AMEX_VALIDATOR
public static final CodeValidator AMEX_VALIDATOR
American Express (Amex) Card Validator34xxxx (15)
37xxxx (15)
-
DINERS_VALIDATOR
public static final CodeValidator DINERS_VALIDATOR
Diners Card Validator300xxx - 305xxx (14)
3095xx (14)
36xxxx (14)
38xxxx (14)
39xxxx (14)
-
DISCOVER_VALIDATOR
public static final CodeValidator DISCOVER_VALIDATOR
Discover Card Validator
-
MASTERCARD_VALIDATOR
public static final CodeValidator MASTERCARD_VALIDATOR
Mastercard Card Validator
-
MASTERCARD_VALIDATOR_PRE_OCT2016
@Deprecated public static final CodeValidator MASTERCARD_VALIDATOR_PRE_OCT2016
Deprecated.for use until Oct 2016 onlyMastercard Card Validator (pre Oct 2016)
-
VISA_VALIDATOR
public static final CodeValidator VISA_VALIDATOR
Visa Card Validator4xxxxx (13 or 16)
-
VPAY_VALIDATOR
public static final CodeValidator VPAY_VALIDATOR
VPay (Visa) Card Validator4xxxxx (13-19)
- Since:
- 1.5.0
-
-
Constructor Detail
-
CreditCardValidator
public CreditCardValidator()
Create a new CreditCardValidator with default options. The default options are: AMEX, VISA, MASTERCARD and DISCOVER
-
CreditCardValidator
public CreditCardValidator(long options)
Create a new CreditCardValidator with the specified options.- Parameters:
options- Pass in CreditCardValidator.VISA + CreditCardValidator.AMEX to specify that those are the only valid card types.
-
CreditCardValidator
public CreditCardValidator(CodeValidator[] creditCardValidators)
Create a new CreditCardValidator with the specifiedCodeValidators.- Parameters:
creditCardValidators- Set of valid code validators
-
CreditCardValidator
public CreditCardValidator(CreditCardValidator.CreditCardRange[] creditCardRanges)
Create a new CreditCardValidator with the specifiedCreditCardValidator.CreditCardRanges.- Parameters:
creditCardRanges- Set of valid code validators- Since:
- 1.6
-
CreditCardValidator
public CreditCardValidator(CodeValidator[] creditCardValidators, CreditCardValidator.CreditCardRange[] creditCardRanges)
Create a new CreditCardValidator with the specifiedCodeValidators andCreditCardValidator.CreditCardRanges.This can be used to combine predefined validators such as
MASTERCARD_VALIDATORwith additional validators using the simplerCreditCardValidator.CreditCardRanges.- Parameters:
creditCardValidators- Set of valid code validatorscreditCardRanges- Set of valid code validators- Since:
- 1.6
-
-
Method Detail
-
genericCreditCardValidator
public static CreditCardValidator genericCreditCardValidator(int minLen, int maxLen)
Create a new generic CreditCardValidator which validates the syntax and check digit only. Does not check the Issuer Identification Number (IIN)- Parameters:
minLen- minimum allowed lengthmaxLen- maximum allowed length- Returns:
- the validator
- Since:
- 1.6
-
genericCreditCardValidator
public static CreditCardValidator genericCreditCardValidator(int length)
Create a new generic CreditCardValidator which validates the syntax and check digit only. Does not check the Issuer Identification Number (IIN)- Parameters:
length- exact length- Returns:
- the validator
- Since:
- 1.6
-
genericCreditCardValidator
public static CreditCardValidator genericCreditCardValidator()
Create a new generic CreditCardValidator which validates the syntax and check digit only. Does not check the Issuer Identification Number (IIN)- Returns:
- the validator
- Since:
- 1.6
-
isValid
public boolean isValid(java.lang.String card)
Checks if the field is a valid credit card number.- Parameters:
card- The card number to validate.- Returns:
- Whether the card number is valid.
-
validate
public java.lang.Object validate(java.lang.String card)
Checks if the field is a valid credit card number.- Parameters:
card- The card number to validate.- Returns:
- The card number if valid or
nullif invalid.
-
-