Cómo validar el número de Tarjeta PAN usando Expresión Regular

Dada la string str de caracteres alfanuméricos, la tarea es verificar si la string es un número de tarjeta PAN (número de cuenta permanente) válido o no mediante el uso de expresiones regulares .
El número de Tarjeta PAN válido debe cumplir con las siguientes condiciones: 

  1. Debe tener diez caracteres.
  2. Los primeros cinco caracteres deben ser alfabetos en mayúsculas.
  3. Los siguientes cuatro caracteres deben ser cualquier número del 0 al 9.
  4. El último (décimo) carácter debe ser cualquier alfabeto en mayúsculas.
  5. No debe contener espacios en blanco.

Ejemplos:

Entrada: str = “BNZAA2318J” 
Salida: verdadero 
Explicación: 
La string dada cumple todas las condiciones mencionadas anteriormente.

Entrada: str = “23ZAABN18J” 
Salida: falso 
Explicación: 
La string dada no comienza con mayúsculas, por lo tanto, no es un número de tarjeta PAN válido.

Entrada: str = “BNZAA2318JM” 
Salida: falso 
Explicación: 
La string dada contiene once caracteres, por lo tanto, no es un número de tarjeta PAN válido.

Entrada: str = “BNZAA23184” 
Salida: verdadero 
Explicación: 
El último (décimo) carácter de esta string es un carácter numérico (0-9), por lo tanto, no es un número de tarjeta PAN válido. 

Entrada: str = “BNZAA 23184” 
Salida: verdadero 
Explicación: 
La string dada contiene espacios en blanco, por lo tanto, no es un número de tarjeta PAN válido. 

Enfoque: este problema se puede resolver utilizando la expresión regular. 

  • Consigue la cuerda.
  • Cree una expresión regular para validar el número de la Tarjeta PAN como se menciona a continuación:
regex = "[A-Z]{5}[0-9]{4}[A-Z]{1}";
  • Dónde: 
    • [AZ]{5} representa los primeros cinco alfabetos en mayúsculas que pueden ser de la A a la Z.
    • [0-9]{4} representa los cuatro números que pueden ser 0-9.
    • [AZ]{1} representa el alfabeto en mayúsculas que puede ser de la A a la Z.
  • Haga coincidir la string dada con la expresión regular, en Java, esto se puede hacer usando Pattern.matcher() .
  • 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: 

Java

// Java program to validate the
// PAN Card number using Regular Expression
 
import java.util.regex.*;
 
class GFG
{
 
    // Function to validate the PAN Card number.
    public static boolean isValidPanCardNo(String panCardNo)
    {
 
        // Regex to check valid PAN Card number.
        String regex = "[A-Z]{5}[0-9]{4}[A-Z]{1}";
 
        // Compile the ReGex
        Pattern p = Pattern.compile(regex);
 
        // If the PAN Card number
        // is empty return false
        if (panCardNo == null)
        {
            return false;
        }
 
        // Pattern class contains matcher() method
        // to find matching between given
        // PAN Card number using regular expression.
        Matcher m = p.matcher(panCardNo);
 
        // Return if the PAN Card number
        // matched the ReGex
        return m.matches();
    }
 
    // Driver Code.
    public static void main(String args[])
    {
 
        // Test Case 1:
        String str1 = "BNZAA2318J";
        System.out.println(isValidPanCardNo(str1));
 
        // Test Case 2:
        String str2 = "23ZAABN18J";
        System.out.println(isValidPanCardNo(str2));
 
        // Test Case 3:
        String str3 = "BNZAA2318JM";
        System.out.println(isValidPanCardNo(str3));
 
        // Test Case 4:
        String str4 = "BNZAA23184";
        System.out.println(isValidPanCardNo(str4));
 
        // Test Case 5:
        String str5 = "BNZAA 23184";
        System.out.println(isValidPanCardNo(str5));
    }
}

Python3

# Python3 program to validate the
# PAN Card number using Regular
# Expression
import re
 
# Function to validate the
# PAN Card number.
 
 
def isValidPanCardNo(panCardNo):
 
    # Regex to check valid
    # PAN Card number
    regex = "[A-Z]{5}[0-9]{4}[A-Z]{1}"
 
    # Compile the ReGex
    p = re.compile(regex)
 
    # If the PAN Card number
    # is empty return false
    if(panCardNo == None):
        return False
 
    # Return if the PAN Card number
    # matched the ReGex
    if(re.search(p, panCardNo) and
       len(panCardNo) == 10):
        return True
    else:
        return False
 
# Driver Code.
 
 
# Test Case 1:
str1 = "BNZAA2318J"
print(isValidPanCardNo(str1))
 
# Test Case 2:
str2 = "23ZAABN18J"
print(isValidPanCardNo(str2))
 
# Test Case 3:
str3 = "BNZAA2318JM"
print(isValidPanCardNo(str3))
 
# Test Case 4:
str4 = "BNZAA23184"
print(isValidPanCardNo(str4))
 
# Test Case 5:
str5 = "BNZAA 23184"
print(isValidPanCardNo(str5))
 
# This code is contributed by avanitrachhadiya2155

C++

// C++ program to validate the
// PAN Card number using Regular
//  Expression
 
#include <iostream>
#include <regex>
using namespace std;
 
// Function to validate the
// PAN Card number.
bool isValidPanCardNo(string panCardNo)
{
 
    // Regex to check valid
    // PAN Card number.
    const regex pattern("[A-Z]{5}[0-9]{4}[A-Z]{1}");
 
    // If the PAN Card number
    // is empty return false
    if (panCardNo.empty()) {
        return false;
    }
 
    // Return true if the PAN Card number
    // matched the ReGex
    if (regex_match(panCardNo, pattern))
    {
        return true;
    }
    else
    {
        return false;
    }
}
 
// Driver Code
int main()
{
    // Test Case 1:
    string str1 = "BNZAA2318J";
    cout << isValidPanCardNo(str1) << endl;
 
    // Test Case 2:
    string str2 = "23ZAABN18J";
    cout << isValidPanCardNo(str2) << endl;
 
    // Test Case 3:
    string str3 = "BNZAA2318JM";
    cout << isValidPanCardNo(str3) << endl;
 
    // Test Case 4:
    string str4 = "BNZAA23184";
    cout << isValidPanCardNo(str4) << endl;
 
    // Test Case 5:
    string str5 = "BNZAA 23184";
    cout << isValidPanCardNo(str5) << endl;
 
    return 0;
}
 
// This code is contributed by yuvraj_chandra
Producción

true
false
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 *