regular online number exprreg credit creator card regex regex-greedy

online - Pruebas de número de tarjeta de crédito Regex



regex r (9)

Estoy probando una aplicación donde la tarjeta de crédito del patrón Regex coincide con los números que deberían estar resaltados. Estoy usando el sitio http://regexpal.com/ para crear números de tarjeta de crédito de prueba para mis pruebas. mi requisito es tener números de tarjeta de crédito válidos que puedan tener "-" y / o "," entre ellos. No logré construir tal número como cuando lo pruebo usando el sitio.

http://regexpal.com/ .

Necesito pocos números de crédito con los escenarios a continuación

  1. número de tarjeta de crédito válido que puede tener "-" entre cualquier dígito.
  2. número de tarjeta de crédito válido que puede tener "," entre cualquier dígito.
  3. número de tarjeta de crédito válido que puede tener una combinación de "," o "-" entre cualquier dígito.

Además de todo lo anterior, aquí hay una expresión regular para las nuevas MasterCards (BIN 2221-2720):

^5[1-5][0-9]{0,14}|^(222[1-9]|2[3-6]//d{2}|27[0-1]//d|2720)[0-9]{0,12}

Tenga en cuenta que esta expresión regular coincidirá si el usuario comienza a escribir los dígitos de la tarjeta, que corresponden a MasterCard. Por ejemplo, si el usuario escribe "222185", la expresión regular coincidirá, porque no hay otro tipo de tarjeta que comience con "2221". Esta expresión regular podría ser útil si desea visualizar el tipo de tarjeta mientras escribe los primeros dígitos de la tarjeta.

Alternativamente, si desea la coincidencia "post factum" , puede cambiar la última parte de {0,14} y {0,12} a {14} y {12} :

^5[1-5][0-9]{14}|^(222[1-9]|2[3-6]//d{2}|27[0-1]//d|2720)[0-9]{12}


Expresiones comunes de vendedores de tarjetas de crédito:

  • Tarjeta Amex: ^3[47][0-9]{13}$
  • BCGlobal: ^(6541|6556)[0-9]{12}$
  • Tarjeta Carte Blanche: ^389[0-9]{11}$
  • Tarjeta Diners Club: ^3(?:0[0-5]|[68][0-9])[0-9]{11}$
  • Tarjeta Discover: ^65[4-9][0-9]{13}|64[4-9][0-9]{13}|6011[0-9]{12}|(622(?:12[6-9]|1[3-9][0-9]|[2-8][0-9][0-9]|9[01][0-9]|92[0-5])[0-9]{10})$
  • Tarjeta de pago Insta: ^63[7-9][0-9]{13}$
  • Tarjeta JCB: ^(?:2131|1800|35/d{3})/d{11}$
  • KoreanLocalCard: ^9[0-9]{15}$
  • Tarjeta láser: ^(6304|6706|6709|6771)[0-9]{12,15}$
  • Tarjeta Maestro: ^(5018|5020|5038|6304|6759|6761|6763)[0-9]{8,15}$
  • Mastercard: ^5[1-5][0-9]{14}$
  • Tarjeta individual: ^(6334|6767)[0-9]{12}|(6334|6767)[0-9]{14}|(6334|6767)[0-9]{15}$
  • Switch Card: ^(4903|4905|4911|4936|6333|6759)[0-9]{12}|(4903|4905|4911|4936|6333|6759)[0-9]{14}|(4903|4905|4911|4936|6333|6759)[0-9]{15}|564182[0-9]{10}|564182[0-9]{12}|564182[0-9]{13}|633110[0-9]{10}|633110[0-9]{12}|633110[0-9]{13}$
  • Tarjeta Union Pay: ^(62[0-9]{14,17})$
  • Tarjeta Visa: ^4[0-9]{12}(?:[0-9]{3})?$
  • Visa Master Card: ^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14})$

First Data valida 15 dígitos para Amex y 16 para visa, mc, discover, diners y jcb, así que solo les envío el número de tarjeta si el número es de 15 o 16 dígitos usando esto:

^[0-9]{15}(?:[0-9]{1})?$


La respuesta aceptada es excelente, pero para acomodar el nuevo MasterCard BIN, creo que debería actualizarse para:

^(?:4[0-9]{12}(?:[0-9]{3})?|[25][1-7][0-9]{14}|6(?:011|5[0-9][0-9])[0-9]{12}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|(?:2131|1800|35/d{3})/d{11})$

(la pieza crítica es [25][1-7][0-9]{14} , ya que el primer dígito ahora puede ser un 2 o un 5 y el segundo dígito puede ser hasta 7)

¡Por favor corrígeme si estoy equivocado!


Para la tarjeta de débito Rupay: ^6[0-9]{15}$


Quite todo , y - y otros no dígitos de la cadena primero.

Luego use esta expresión regular que coincida con las tarjetas Visa, MasterCard, American Express, Diners Club, Discover y JCB:

^(?:4[0-9]{12}(?:[0-9]{3})?|[25][1-7][0-9]{14}|6(?:011|5[0-9][0-9])[0-9]{12}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|(?:2131|1800|35/d{3})/d{11})$


Regex para redes de tarjetas líderes

Master Card (2-Bin, 5-Bin both): "(?: 5 [1-5] [0-9] {2} | 222 [1-9] | 22 [3-9] [0-9] | 2 [3-6] [0-9] {2} | 27 [01] [0-9] | 2720) [0-9] {12} "

Visa : "^ 4 [0-9] {6,} $"

Diner''s Club : "(^ 30 [0-5] [0-9] {11} $) | (^ (36 | 38) [0-9] {12} $)"

American Express : "^ [34 | 37] [0-9] {14} $"

JCB : "(^ 3 [0-9] {15} $) | (^ (2131 | 1800) [0-9] {11} $)"

Descubre : "^ 6011 -? / D {4} -? / D {4} -? / D {4} $"


Regx para la tarjeta de Rupay:

(508 [5-9] [0-9] {12}) | (6069 [8-9] [0-9] {11}) | (607 [0-8] [0-9] {12}) | (6079 [0-8] [0-9] {11}) | (608 [0-5] [0-9] {12}) | (6521 [5-9] [0-9] {11} ) | (652 [2-9] [0-9] {12}) | (6530 [0-9] {12}) | (6531 [0-4] [0-9] {11})

utilizando series bin: 508500 - 508999, 606985 - 606999, 607000 - 607899, 607900 - 607984, 608001 - 608500, 652150 --- 652199, 652200 --- 652999, 653000 --- 653099, 653100 --- 653149,


Se me ocurrió una expresión regular que permite guiones y espacios. Pruébelo aquí: https://regex101.com/r/Rx2iWD/1

Para permitir comas (que creo que es inusual), solo agréguela a la definición de sep .

En PHP:

$ccPatt = ''/ (?(DEFINE) (?<sep> [ -]?) ) (?<!/d)(?: /d{4} (?&sep) /d{4} (?&sep) /d{4} (?&sep) /d{4} # 16 digits | /d{3} (?&sep) /d{3} (?&sep) /d{3} (?&sep) /d (?&sep) /d{3} # 13 digits | /d{4} (?&sep) /d{6} (?&sep) /d{4} # 14 digits | /d{4} (?&sep) /d{6} (?&sep) /d{5} # 15 digit card )(?!/d) /xu'';