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:
- Debe tener 13 o 16 dígitos, las tarjetas nuevas tienen 16 dígitos y las tarjetas antiguas tienen 13 dígitos.
- Debe comenzar con 4.
- Si las tarjetas tienen 13 dígitos, los siguientes doce dígitos deben ser cualquier número entre 0 y 9.
- Si las tarjetas tienen 16 dígitos, los siguientes quince dígitos deben ser cualquier número entre 0 y 9.
- 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.
- Consigue la cuerda.
- 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})?$";
- 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.
- 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 // 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
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