From 89361950f57132ac7b6fd1e9fc50bfac1c7717a3 Mon Sep 17 00:00:00 2001 From: Markus Spann Date: Wed, 21 Oct 2026 14:29:54 +0200 Subject: [PATCH] [VALIDATOR-511] Add JCB to CreditCardValidator Adds the JCB option and JCB_VALIDATOR for the IIN range 3528-3589 with 16 to 19 digits, alongside the existing Diners and VPay types. --- .../routines/CreditCardValidator.java | 21 +++++ .../routines/CreditCardValidatorTest.java | 76 ++++++++++++++++++- 2 files changed, 95 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/apache/commons/validator/routines/CreditCardValidator.java b/src/main/java/org/apache/commons/validator/routines/CreditCardValidator.java index 170e7e768..12047ddba 100644 --- a/src/main/java/org/apache/commons/validator/routines/CreditCardValidator.java +++ b/src/main/java/org/apache/commons/validator/routines/CreditCardValidator.java @@ -204,6 +204,13 @@ public CreditCardRange(final String low, final String high, final int [] lengths @Deprecated public static final long MASTERCARD_PRE_OCT2016 = 1 << 6; // CHECKSTYLE IGNORE MagicNumber + /** + * Option specifying that JCB cards are allowed. + * + * @since 1.12.0 + */ + public static final long JCB = 1 << 7; // CHECKSTYLE IGNORE MagicNumber + /** * Luhn checkdigit validator for the card numbers. */ @@ -242,6 +249,16 @@ public CreditCardRange(final String low, final String high, final int [] lengths /** Discover Card Validator */ public static final CodeValidator DISCOVER_VALIDATOR = new CodeValidator(DISCOVER_REGEX, LUHN_VALIDATOR); + /** + * JCB Card Validator + * + * + * @since 1.12.0 + */ + public static final CodeValidator JCB_VALIDATOR = new CodeValidator("^(35(?:2[89]|[3-8]\\d)\\d{12,15})$", LUHN_VALIDATOR); + /** * Mastercard regular expressions *