Una expresión regular es una secuencia de caracteres que forma un patrón de búsqueda. Las expresiones regulares se utilizan principalmente para buscar, validar y transformar textos o cadenas.
Aprenda a validar números de tarjetas de crédito como Mastercard, Visa Card y American Express con expresiones regulares.
¿Cuándo usar RegEx para validar un número de tarjeta de crédito?
Los servicios de terceros cobran por cada intento de transacción. Ya sea que la transacción sea exitosa o no, debe pagar los cargos. En tales casos, desea rechazar los números de tarjetas de crédito que claramente no son válidos. Puede validar rápidamente números de tarjetas de crédito utilizando expresiones regulares.
Pero no puede confiar completamente en la validación de expresiones regulares para su función de pago. Los emisores de tarjetas cambian regularmente los patrones de sus números de tarjeta (introduciendo nuevos patrones o retirando los antiguos), por lo que el método regex no es la solución más sólida. Aunque puede intentar mantenerse al tanto de los patrones de tarjetas de una fuente como
Wikipedia que se actualiza con frecuencia.También puede usar expresiones regulares para encontrar rápidamente la marca de la tarjeta que luego puede usar para mostrar logotipos o etiquetas.
Las expresiones regulares tienen varios casos prácticos de uso. El comando grep de Linux es probablemente el caso de uso práctico más común de expresiones regulares.
El código utilizado en este proyecto está disponible en un repositorio GitHub y es gratis para su uso bajo la licencia MIT.
RegEx para validar el número de Mastercard
Un número de Mastercard es válido si cumple las siguientes condiciones:
- La cadena no debe contener caracteres especiales, alfabetos o espacios en blanco.
- El número de caracteres debe ser igual a 16.
- La cadena debe comenzar con un rango de números de 2 dígitos (entre 51 y 55) o un rango de números de 4 dígitos (entre 2221 y 2720).
- Si la cadena comienza con un rango de números de 2 dígitos (entre 51 y 55), los siguientes 14 dígitos deben ser un número entre 0 y 9.
- Si la cadena comienza con un rango de números de 4 dígitos (entre 2221 y 2720), los siguientes 12 dígitos deben ser un número entre 0 y 9.
La siguiente expresión regular satisface las condiciones anteriores y puede validar un número de Mastercard:
^5[1-5][0-9]{14}|^(222[1-9]|22[3-9]\\d|2[3-6]\\d{2}|27[ 0-1]\\d|2720)[0-9]{12}$
Si no se siente cómodo con la expresión anterior, consulte una guía para principiantes de expresiones regulares primero.
Puede usar la expresión regular anterior para validar el número de Mastercard en cualquier lenguaje de programación. He aquí cómo hacerlo en Python:
importar re
definitivamentecheckMasterCardNo(número de tarjeta):
expresión regular = "^5[1-5][0-9]{14}|^(222[1-9]|22[3-9]\\d|2[3-6]\\d{2}|27[ 0-1]\\d|2720)[0-9]{12}$"
r = recompilar (regex)si (re.buscar(r, número de tarjeta)):
imprimir("Válido")
demás:
imprimir("No es válido")tarjeta1 = "5110762060017101"
checkMasterCardNo (tarjeta1)
tarjeta2 = "8632458236982734"
checkMasterCardNo (tarjeta2)
Ejecutar este código confirmará que el primer número es válido pero el segundo no:
RegEx para validar el número de tarjeta Visa
Un número de tarjeta Visa es válido si cumple las siguientes condiciones:
- La cadena no debe contener caracteres especiales, alfabetos o espacios en blanco.
- La cadena debe comenzar con 4.
- El número de caracteres debe ser igual a 13 o 16. Las tarjetas visa antiguas tienen 13 caracteres y las nuevas tienen 16 caracteres.
- Si el número de caracteres es igual a 13, los últimos 12 dígitos deben ser un número entre 0 y 9.
- Si el número de caracteres es igual a 16, los últimos 15 dígitos deben ser un número entre 0 y 9.
La siguiente expresión regular cumple con las condiciones anteriores y puede usarla para validar un número de tarjeta Visa:
^4[0-9]{12}(?:[0-9]{3})?$
A continuación se muestra el enfoque de Python para validar un número de tarjeta Visa:
importar re
definitivamentecheckVisaCardNo(número de tarjeta):
expresión regular = "^4[0-9]{12}(?:[0-9]{3})?$"
r = recompilar (regex)si (re.buscar(r, número de tarjeta)):
imprimir("Válido")
demás:
imprimir("No es válido")tarjeta1 = "4539890694174109"
checkVisaCardNo (tarjeta1)
tarjeta2 = "49237429498"
checkVisaCardNo (tarjeta2)
Nuevamente, la salida confirma que el primer número es válido mientras que el segundo no es válido:
RegEx para validar el número de tarjeta American Express
Un número de tarjeta American Express es válido si cumple las siguientes condiciones:
- La cadena no debe contener caracteres especiales, alfabetos o espacios en blanco.
- Este número de caracteres debe ser igual a 15.
- La cadena debe comenzar con 34 o 37.
- Los últimos 13 dígitos deben ser un número entre 0 y 9.
La siguiente expresión regular cumple con las condiciones anteriores y puede usarla para validar un número de tarjeta American Express:
^3[47][0-9]{13}$
Puede validar un número de tarjeta American Express utilizando el siguiente código de Python:
importar re
definitivamentecheckAmericanExpressCardNo(número de tarjeta):
expresión regular = "^3[47][0-9]{13}$"
r = recompilar (regex)si (re.buscar(r, número de tarjeta)):
imprimir("Válido")
demás:
imprimir("No es válido")tarjeta1 = "372831730491196"
checkAmericanExpressCardNo (tarjeta1)
tarjeta2 = "84732593847743042"
checkAmericanExpressCardNo (tarjeta2)
Una vez más, la salida confirma que el primer número es válido, pero el segundo no es válido:
Aplicaciones de las expresiones regulares
Puede usar algunas expresiones regulares bastante simples para validar números de tarjetas de crédito comunes. RegEx es una poderosa herramienta que puede usar para el procesamiento previo de datos, la coincidencia de patrones, la extracción de datos, el análisis léxico, el procesamiento de lenguaje natural, el web scraping y más. También puede usar expresiones regulares en el desarrollo web para manejar la validación de formularios HTML.