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.
- Debe tener 16 dígitos.
- 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.
- En el caso de 51 a 55, los siguientes catorce dígitos deben ser cualquier número entre 0 y 9.
- En el caso de 2221 a 2720, los siguientes doce dígitos deben ser cualquier número entre 0 y 9.
- 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
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