Cómo validar el número de tarjeta Visa usando la expresión regular

Dada una string str , la tarea es verificar si la string dada es un número de tarjeta Visa válido o no mediante el uso de expresiones regulares
El número de tarjeta Visa válido debe cumplir las siguientes condiciones: 
 

  1. Debe tener 13 o 16 dígitos, las tarjetas nuevas tienen 16 dígitos y las tarjetas antiguas tienen 13 dígitos.
  2. Debe comenzar con 4.
  3. Si las tarjetas tienen 13 dígitos, los siguientes doce dígitos deben ser cualquier número entre 0 y 9.
  4. Si las tarjetas tienen 16 dígitos, los siguientes quince dígitos deben ser cualquier número entre 0 y 9.
  5. No debe contener alfabetos ni caracteres especiales.

Ejemplos: 
 

Entrada: str = “4155279860457”; 
Salida: verdadero 
Explicación: La string dada satisface todas las condiciones mencionadas anteriormente. Por lo tanto, es un número de tarjeta Visa válido. 
Entrada: str = «4155279»; 
Salida: falso. 
Explicación: La string dada tiene 7 dígitos. Por lo tanto, no es un número de tarjeta Visa válido. 
Entrada: str = «6155279860457»; 
Salida: falso. 
Explicación: La string dada no comienza con 4. Por lo tanto, no es un número de tarjeta Visa válido. 
 

Enfoque: La idea es usar la expresión regular para resolver este problema. Se pueden seguir los siguientes pasos para calcular la respuesta. 
 

  1. Consigue la cuerda.
  2. Cree una expresión regular para verificar el número de tarjeta Visa válido como se menciona a continuación: 
     
regex = "^4[0-9]{12}(?:[0-9]{3})?$";
  1. Dónde: 
    • ^ representa el comienzo de la string.
    • 4 representa que la string debe comenzar con 4.
    • [0-9]{12} representa que los siguientes doce dígitos deben estar entre 0-9.
    • ( representa el inicio del grupo.
    • ? representa el tiempo 0 o 1.
    • [0-9]{3} representa que los siguientes tres dígitos deben estar entre 0-9.
    • ) representa el final del grupo.
    • ? representa el tiempo 0 o 1.
    • $ representa el final de la string.
  2. Haga coincidir la string dada con la expresión regular. 
    En Java, esto se puede hacer usando Pattern.matcher() .
    En C++, esto se puede hacer usando regex_match() .
  3. Devuelve verdadero si la string coincide con la expresión regular dada; de lo contrario, devuelve falso.

A continuación se muestra la implementación del enfoque anterior: 
 

C++

// C++ program to validate
// Visa Card number
// using Regular Expression
#include <iostream>
#include <regex>
using namespace std;
 
// Function to validate Visa Card number
bool isValidVisaCardNo(string str)
{
 
  // Regex to check valid Visa Card number
  const regex pattern("^4[0-9]{12}(?:[0-9]{3})?$");
 
  // If the Visa Card number
  // is empty return false
  if (str.empty())
  {
     return false;
  }
 
  // Return true if the Visa Card number
  // matched the ReGex
  if(regex_match(str, pattern))
  {
    return true;
  }
  else
  {
    return false;
  }
}
 
// Driver Code
int main()
{
   
  // Test Case 1:
  string str1 = "4155279860457";
  cout << isValidVisaCardNo(str1) << endl;
 
  // Test Case 2:
  string str2 = "4155279860457201";
  cout << isValidVisaCardNo(str2) << endl;
 
  // Test Case 3:
  string str3 = "4155279";
  cout << isValidVisaCardNo(str3) << endl;
 
  // Test Case 4:
  string str4 = "6155279860457";
  cout << isValidVisaCardNo(str4) << endl;
 
  // Test Case 5:
  string str5 = "415a27##60457";
  cout << isValidVisaCardNo(str5) << endl;
 
  return 0;
}
 
// This code is contributed by yuvraj_chandra

Java

// Java program to validate
// Visa Card number
// using regular expression
import java.util.regex.*;
class GFG {
 
    // Function to validate
    // Visa Card number.
    // using regular expression.
    public static boolean
    isValidVisaCardNo(String str)
    {
        // Regex to check valid.
        // Visa Card number
        String regex = "^4[0-9]{12}(?:[0-9]{3})?$";
 
        // Compile the ReGex
        Pattern p = Pattern.compile(regex);
 
        // If the string is empty
        // return false
        if (str == null) {
            return false;
        }
 
        // Find match between given string
        // and regular expression
        // using Pattern.matcher()
 
        Matcher m = p.matcher(str);
 
        // Return if the string
        // matched the ReGex
        return m.matches();
    }
 
    // Driver code
    public static void main(String args[])
    {
 
        // Test Case 1:
        String str1 = "4155279860457";
        System.out.println(
            isValidVisaCardNo(str1));
 
        // Test Case 2:
        String str2 = "4155279860457201";
        System.out.println(
            isValidVisaCardNo(str2));
 
        // Test Case 3:
        String str3 = "4155279";
        System.out.println(
            isValidVisaCardNo(str3));
 
        // Test Case 4:
        String str4 = "6155279860457";
        System.out.println(
            isValidVisaCardNo(str4));
 
        // Test Case 5:
        String str5 = "415a27##60457";
        System.out.println(
            isValidVisaCardNo(str5));
    }
}

Python3

# Python3 program to validate Visa
# Card number using regular expression
import re
 
# Function to validate Visa Card
# number using regular expression.
def isValidVisaCardNo(string):
     
    # Regex to check valid Visa
    # Card number
    regex = "^4[0-9]{12}(?:[0-9]{3})?$";
 
    # Compile the ReGex
    p = re.compile(regex);
     
    # If the string is empty
    # return false
    if (string == ''):
        return False;
         
    # Pattern class contains matcher()
    # method to find matching between
    # given string and regular expression.
    m = re.match(p, string);
     
    # Return True if the string
    # matched the ReGex else False
    if m is None:
        return False
    else:
        return True
 
# Driver code
if __name__ == "__main__":
     
    # Test Case 1
    str1 = "4155279860457";
    print(isValidVisaCardNo(str1));
     
    # Test Case 2
    str2 = "4155279860457201";
    print(isValidVisaCardNo(str2));
     
    # Test Case 3
    str3 = "4155279";
    print(isValidVisaCardNo(str3));
     
    # Test Case 4
    str4 = "6155279860457";
    print(isValidVisaCardNo(str4));
     
    # Test Case 5
    str5 = "415a27##60457";
    print(isValidVisaCardNo(str5));
     
# This code is contributed by AnkitRai01
Producción: 

true
true
false
false
false

 

Publicación traducida automáticamente

Artículo escrito por prashant_srivastava y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *