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

Dada una string de caracteres alfanuméricos, la tarea es verificar si la string dada es un número de pasaporte válido o no mediante el uso de expresiones regulares
El número de pasaporte válido de la India debe cumplir las siguientes condiciones: 

  1. Debe tener ocho caracteres.
  2. El primer carácter debe ser un alfabeto en mayúsculas.
  3. Los siguientes dos caracteres deben ser un número, pero el primer carácter debe ser cualquier número del 1 al 9 y el segundo carácter debe ser cualquier número del 0 al 9.
  4. Debe ser cero o un carácter de espacio en blanco.
  5. Los siguientes cuatro caracteres deben ser cualquier número del 0 al 9.
  6. El último carácter debe ser cualquier número del 1 al 9.

Ejemplos: 

Entrada: str = «A2096457»; 
Salida: verdadero 
Explicación: La string dada satisface todas las condiciones mencionadas anteriormente. Por lo tanto, es un número de pasaporte válido de la India. 

Entrada: str = «12096457»; 
Salida: falso 
Explicación: la string dada no comienza con un alfabeto en mayúsculas. Por lo tanto, no es un número de pasaporte válido de la India. 

Entrada: str = «A209645704»; 
Salida: falso 
Explicación: La string dada contiene 10 caracteres. Por lo tanto, no es un número de pasaporte válido de la India. 

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 pasaporte válido de India como se menciona a continuación: 

expresión regular = «^[A-PR-WYa-pr-wy][1-9]\\d\\s?\\d{4}[1-9]$»; 

  1. Dónde: 
    • ^ representa el comienzo de la string.
    • [A-PR-WYa-pr-wy] representa que la string debe comenzar con AZ excluyendo Q, X y Z.
    • [1-9] representa que el segundo carácter debe ser cualquier número del 1 al 9.
    • \\d representa que el tercer carácter debe ser cualquier número del 0 al 9.
    • \\¿s? representa la string debe ser cero o un carácter de espacio en blanco.
    • \\d{4} representa que los siguientes cuatro caracteres deben ser cualquier número del 0 al 9.
    • [1-9] representa el último carácter que debe ser cualquier número del 1 al 9.
    • $ 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() .
  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: 

Java

// Java program to validate
// passport number of India
// using regular expression
 
import java.util.regex.*;
 
class GFG {
 
    // Function to validate
    // passport number of India
    // using regular expression
    public static boolean isValidPassportNo(String str)
    {
        // Regex to check valid.
        // passport number of India
        String regex = "^[A-PR-WYa-pr-wy][1-9]\\d"
                       + "\\s?\\d{4}[1-9]$";
 
        // 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 = "A21 90457";
        System.out.println(isValidPassportNo(str1));
 
        // Test Case 2:
        String str2 = "A0296457";
        System.out.println(isValidPassportNo(str2));
 
        // Test Case 3:
        String str3 = "Q2096453";
        System.out.println(isValidPassportNo(str3));
 
        // Test Case 4:
        String str4 = "12096457";
        System.out.println(isValidPassportNo(str4));
 
        // Test Case 5:
        String str5 = "A209645704";
        System.out.println(isValidPassportNo(str5));
    }
}

Python3

# Python3 program to validate passport
# number of India using regular expression
import re
 
# Function to validate the pin code
# of India.
 
 
def isValidPassportNo(string):
 
    # Regex to check valid pin code
    # of India.
    regex = "^[A-PR-WYa-pr-wy][1-9]\\d" +\
            "\\s?\\d{4}[1-9]$"
 
    # 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 = "A21 90457"
    print(isValidPassportNo(str1))
 
    # Test Case 2:
    str2 = "A0296457"
    print(isValidPassportNo(str2))
 
    # Test Case 3:
    str3 = "Q2096453"
    print(isValidPassportNo(str3))
 
    # Test Case 4:
    str4 = "12096457"
    print(isValidPassportNo(str4))
 
    # Test Case 5:
    str5 = "A209645704"
    print(isValidPassportNo(str5))
 
# This code is contributed by AnkitRai01

C++

// C++ program to validate the
// passport number
// using Regular Expression
#include <iostream>
#include <regex>
using namespace std;
 
// Function to validate the passport number
bool isValidPassportNo(string str)
{
 
    // Regex to check valid passport number
    const regex pattern(
        "^[A-PR-WYa-pr-wy][1-9]"
         "\\d\\s?\\d{4}[1-9]$");
 
    // If the passport number
    // is empty return false
    if (str.empty()) {
        return false;
    }
 
    // Return true if the passport number
    // matched the ReGex
    if (regex_match(str, pattern)) {
        return true;
    }
    else {
        return false;
    }
}
 
// Driver Code
int main()
{
    // Test Case 1:
    string str1 = "A21 90457";
    cout << isValidPassportNo(str1) << endl;
 
    // Test Case 2:
    string str2 = "A0296457";
    cout << isValidPassportNo(str2) << endl;
 
    // Test Case 3:
    string str3 = "Q2096453";
    cout << isValidPassportNo(str3) << endl;
 
    // Test Case 4:
    string str4 = "12096457";
    cout << isValidPassportNo(str4) << endl;
 
    // Test Case 5:
    string str5 = "A209645704";
    cout << isValidPassportNo(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 *