- if $number =~ /^30[0-5][\dx]{11}([\dx]{2})?$/o #diner's: 300-305
- || $number =~ /^3095[\dx]{10}([\dx]{2})?$/o #diner's: 3095
- || $number =~ /^3[689][\dx]{12}([\dx]{2})?$/o #diner's: 36 38 and 39
- || $number =~ /^6011[\dx]{12}$/o
- || $number =~ /^64[4-9][\dx]{13}$/o
- || $number =~ /^65[\dx]{14}$/o
- || ( $number =~ /^62[24-68][\dx]{13}$/o && uc($Country) ne 'CN' ) #CUP
- || ( $number =~ /^35(2[89]|[3-8][\dx])[\dx]{12}$/o && $Country =~ /^(US|CA)$/oi ); #JCB cards in the 3528-3589 range are identified as Discover inside the US and Canada
+ if $number =~ /^30[0-5][\dx]{13,16}$/o #diner's: 300-305
+ || $number =~ /^3095[\dx]{12}$/o #diner's: 3095
+ || $number =~ /^36[\dx]{12,17}$/o #diner's: 36
+ || $number =~ /^3[89][\dx]{14,17}$/o #diner's: 38 and 39
+ || $number =~ /^6011[\dx]{12,15}$/o
+ || $number =~ /^64[4-9][\dx]{13,16}$/o
+ || $number =~ /^65[\dx]{14,17}$/o
+ || ( $number =~ /^62[24-68][\dx]{13,16}$/o && $Country =~ /^(US|MX|CU|HT|DO|PR|JM|TT|GP|MQ|BS|BB|LC|CW|AW|VC|VI|GD|AG|DM|KY|KN|SX|TC|MF|VG|BQ|AI|BL|MS)$/oi ) #China Union Pay identified as Discover in US, Mexico and Caribbean
+ || ( $number =~ /^35(2[89]|[3-8][\dx])[\dx]{12,15}$/o && $Country =~ /^(US|PR|VI|MP|PW|GU)$/oi ); #JCB cards in the 3528-3589 range are identified as Discover in US, Puerto Rico, US Virgin Islands, Northern Mariana Islands, Palau and Guam