Pregunta Pruebas de número de tarjeta de crédito Regex


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 mi prueba. 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.

31
2018-02-16 17:05


origen


Respuestas:


Eliminar 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})$


46
2018-02-16 17:08



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}$
  • Discover Card: ^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})$
  • Insta Tarjeta de pago: ^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}$
  • Tarjeta MasterCard: ^5[1-5][0-9]{14}$
  • Tarjeta Solo: ^(6334|6767)[0-9]{12}|(6334|6767)[0-9]{14}|(6334|6767)[0-9]{15}$
  • Cambiar la tarjeta: ^(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 Mastercard: ^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14})$

124
2018-04-22 22:21



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


6
2018-01-06 12:30



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!


6
2018-03-29 20:32



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})

usando la serie de bin: 508500 - 508999, 606985 - 606999, 607000 - 607899, 607900 - 607984, 608001 - 608500, 652150 --- 652199, 652200 --- 652999, 653000 --- 653099, 653100 --- 653149,


1
2018-02-10 09:52



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})?$

1
2017-09-14 17:04



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

^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 los tipos de usuario "222185" entonces 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 quieres "post factum" coincidencia, 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}

1
2018-04-18 09:09



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

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

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';

0
2017-11-10 23:20



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} $)"

Descubrir: "^ 6011 -? \ D {4} -? \ D {4} -? \ D {4} $"


0
2017-11-23 08:36