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

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

  1. Debe tener 16 dígitos.
  2. Debe comenzar con un número de dos dígitos que puede variar de 51 a 55 o un número de cuatro dígitos que puede variar de 2221 a 2720.
  3. En el caso de 51 a 55, los siguientes catorce dígitos deben ser cualquier número entre 0 y 9.
  4. En el caso de 2221 a 2720, los siguientes doce dígitos deben ser cualquier número entre 0 y 9.
  5. No debe contener letras ni caracteres especiales.

Ejemplos: 

Entrada: str = «5114496353984312»; 
Salida: verdadero 
Explicación: 
La string dada satisface todas las condiciones mencionadas anteriormente. Por lo tanto, es un número de Master Card válido.
Entrada: str = «5582822410»; 
Salida: falso 
Explicación: 
La string dada tiene 10 dígitos. Por lo tanto, no es un número de Master Card válido.
Entrada: str = «6082822463100051»; 
Salida: falso 
Explicación: 
La string dada no comienza con un número de dos dígitos que puede variar de 51 a 55 o un número de cuatro dígitos que puede variar de 2221 a 2720. Por lo tanto, no es un número de tarjeta maestra 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. 

  • Consigue la cuerda.
  • Cree una expresión regular para verificar el número de Master Card válido como se menciona a continuación: 
     

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}$”; 

  • Dónde: 
    • ^ representa el comienzo de la string.
    • 5[1-5] representa el primer número de dos dígitos que puede oscilar entre 51 y 55.
    • [0-9]{14} representa que los siguientes catorce dígitos deben estar entre 0 y 9.
    • | representa el o.
    • ( representa el comienzo del grupo.
    • 222[1-9] representa el primer número de cuatro dígitos que puede oscilar entre 2221 y 2229.
    • | representa el o.
    • 22[3-9]\\d representa el primer número de cuatro dígitos que puede oscilar entre 2230 y 2299.
    • | representa el o.
    • 2[3-6]\\d{2} representa el primer número de cuatro dígitos que puede oscilar entre 2300 y 2699.
    • | representa el o.
    • 27[0-1]\\d representa el primer número de cuatro dígitos que puede oscilar entre 2700 y 2719.
    • | representa el o.
    • 2720 ​​representa los primeros cuatro dígitos que pueden comenzar con 2720.
    • ) representa el final del grupo.
    • [0-9]{12} representa que los siguientes doce dígitos deben estar entre 0-9.
    • $ representa el final de la string.
  • 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()
  • 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
// Master Card number
// using Regular Expression
#include <iostream>
#include <regex>
using namespace std;
 
// Function to validate Master Card number
bool isValidMasterCardNo(string str)
{
 
  // Regex to check valid Master Card number
  const regex pattern("^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}$");
 
  // If the Master Card number
  // is empty return false
  if (str.empty())
  {
     return false;
  }
 
  // Return true if the Master Card number
  // matched the ReGex
  if(regex_match(str, pattern))
  {
    return true;
  }
  else
  {
    return false;
  }
}
 
// Driver Code
int main()
{
  // Test Case 1:
  string str1 = "5114496353984312";
  cout << isValidMasterCardNo(str1) << endl;
 
  // Test Case 2:
  string str2 = "2720822463109651";
  cout << isValidMasterCardNo(str2) << endl;
 
  // Test Case 3:
  string str3 = "5582822410";
  cout << isValidMasterCardNo(str3) << endl;
 
  // Test Case 4:
  string str4 = "6082822463100051";
  cout << isValidMasterCardNo(str4) << endl;
 
  // Test Case 5:
  string str5 = "2221149a635##843";
  cout << isValidMasterCardNo(str5) << endl;
 
  return 0;
}
 
// This code is contributed by yuvraj_chandra

Java

// Java program to validate
// Master Card number
// using regular expression
 
import java.util.regex.*;
class GFG {
 
    // Function to validate
    // Master Card number
    // using regular expression.
    public static boolean
    isValidMasterCardNo(String str)
    {
 
        // Regex to check valid
        // Master Card number.
        String regex = "^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}$";
 
        // 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 = "5114496353984312";
        System.out.println(
            isValidMasterCardNo(str1));
 
        // Test Case 2:
        String str2 = "2720822463109651";
        System.out.println(
            isValidMasterCardNo(str2));
 
        // Test Case 3:
        String str3 = "5582822410";
        System.out.println(
            isValidMasterCardNo(str3));
 
        // Test Case 4:
        String str4 = "6082822463100051";
        System.out.println(
            isValidMasterCardNo(str4));
 
        // Test Case 5:
        String str5 = "2221149a635##843";
        System.out.println(
            isValidMasterCardNo(str5));
    }
}

Python3

# Python3 program to validate
# Master Card number
# using regular expression
import re
 
# Function to validate
# Master Card number
# using regular expression.
def isValidMasterCardNo(str):
 
    # Regex to check valid
    # Master Card number.
    regex = "^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}$"
     
    # Compile the ReGex
    p = re.compile(regex)
 
    # If the string is empty
    # return false
    if (str == None):
        return False
 
    # Return if the string
    # matched the ReGex
    if(re.search(p, str)):
        return True
    else:
        return False
 
# Driver code
 
# Test Case 1:
str1 = "5114496353984312"
print(isValidMasterCardNo(str1))
 
# Test Case 2:
str2 = "2720822463109651"
print(isValidMasterCardNo(str2))
 
# Test Case 3:
str3 = "5582822410"
print(isValidMasterCardNo(str3))
 
# Test Case 4:
str4 = "6082822463100051"
print(isValidMasterCardNo(str4))
 
# Test Case 5:
str5 = "2221149a635##843"
print(isValidMasterCardNo(str5))
 
# This code is contributed by avanitrachhadiya2155
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 *