¿Existen expresiones regulares conocidas para validar los datos de la pista 1 y 2 de la tarjeta de crédito?Expresión regular para datos de seguimiento de tarjeta de crédito
EDIT:
De Wikipedia:
La información sobre la pista 1 en tarjetas financieras está contenido en varios formatos: Una, que está reservado para uso propio del emisor de la tarjeta, B, que se describe a continuación , CM, que están reservados para su uso por ANSI Subcomité X3B10 y NZ, que están disponibles para su uso por los emisores de tarjetas individuales:
pista 1, Formato B:
- inicio centinela - un carácter (por lo general '%')
- código de formato = "B" - un carácter (Alpha)
- número de cuenta principal (PAN) - hasta 19 caracteres. Por lo general, pero no siempre, coincide con el número de tarjeta de crédito impreso en el frente de la tarjeta.
- Separador de campo - un carácter (por lo general '^')
- Nombre - dos a 26 caracteres
- Separador de campo - un carácter (por lo general '^')
- Fecha de caducidad - cuatro caracteres en forma AAMM.
- Código de servicio - tres caracteres
- datos discrecional - puede incluir PIN de verificación de indicadores clave (PVKI, 1 carácter), PIN Verification Value (PVV, 4 caracteres), Card Verification Value o código de verificación de la tarjeta (CVV o CVK, 3 caracteres)
- centinela final - un carácter (generalmente '?')
- verificación de redundancia longitudinal (LRC) - es un carácter y un carácter de validez calculado a partir de otros datos en la pista. Cabe señalar que la mayoría de los dispositivos lectores no devuelven este valor cuando la tarjeta se pasa a la capa de presentación, y la usan solo para verificar la entrada internamente en el lector.
Pista 2: Este formato fue desarrollado por la industria bancaria (ABA). Esta pista está escrita con un esquema de 5 bits (4 bits de datos + 1 paridad), que permite dieciséis caracteres posibles, que son los números 0-9, más los seis caracteres:; < =>? . La selección de seis símbolos de puntuación puede parecer extraña, pero de hecho los dieciséis códigos simplemente se asignan al rango ASCII de 0x30 a 0x3f, que define diez dígitos más los seis símbolos. El formato de datos es el siguiente:
- inicio centinela - un carácter (por lo general ';')
- número de cuenta principal (PAN) - hasta 19 caracteres. Por lo general, pero no siempre, coincide con el número de tarjeta de crédito impreso en el frente de la tarjeta.
- Separador: un carácter (generalmente '=')
- Fecha de caducidad: cuatro caracteres con el formato YYMM. código
- Servicio - tres caracteres
- datos discrecionales - como en la pista uno
- Fin centinela - un carácter (por lo general '?')
- Comprobación de redundancia longitudinal (LRC): es un carácter y un carácter de validez calculado a partir de otros datos en la pista. Cabe señalar que la mayoría de los dispositivos lectores no devuelven este valor cuando la tarjeta se pasa a la capa de presentación, y la usan solo para verificar la entrada internamente en el lector.
¿Puede proporcionarnos algunos ejemplos de dichos datos? –
He estado en el negocio de cc por un tiempo y ahora me cuesta imaginar por qué necesitarías esto. En general, dado que la pista 1,2,3 está en el dominio del emisor, a menudo será difícil encontrar datos que no sean PAN, fecha de vencimiento y código de servicio en los datos de la pista y el nombre que podrían ser basura, incluso he venido a través de PAN que no pasan el control de Luhn.Esta es la razón por la cual me parece que tendrás un buen número de casos especiales en producción para ajustar la expresión regular para que sea lo suficientemente sensible como para no descartar datos de producción que entren en conflicto con la especificación ISO. – bbozo