使用正则表达式验证UPI ID


在这个问题中,我们将使用正则表达式来验证UPI ID。UPI是统一支付接口,分配给每个客户,其他人可以使用它向您转账。

  • UPI ID包含字母数字字符。

  • UPI ID必须包含“@”字符。

  • UPI ID不能包含空格。

  • UPI ID可以包含点(.)或连字符(-)。

问题陈述 - 我们以字符串格式给定一个UPI ID。我们需要使用正则表达式来验证UPI ID。

示例

Input: upi = "shubham@okaxis"
Output: ‘Yes’

解释

UPI ID包含“@”和字母数字字符。所以它是有效的。

Input: upi = "shubhamokaxis";
Output: No

解释

UPI ID不包含“@”字符。所以它不是有效的UPI ID。

Input: upi = "shubham@:okaxis";
Output: No

解释

UPI ID包含“:”,这是一个无效字符。

正则表达式

正则表达式是一个用于识别字符串中模式的字符串。以下是验证UPI的正则表达式。

"^[0-9A-Za-z.-]{2,256}@[A-Za-z]{2,64}$"
  • ^ − 正则表达式的开头。

  • [0-9A-Za-z.-]{2,256} − 开头应包含2到256个字母数字、点或连字符字符。

  • @ − 它必须包含@字符。

  • [A-Za-z]{2,64} − 在“@”字符之后,它应包含2到64个字母字符。

方法一

在这种方法中,我们将使用“regex_match”方法来验证正则表达式。

算法

  • 步骤1 - 导入“regex”库以使用与正则表达式相关的函数。

  • 步骤2 - 使用“regex”数据类型创建一个名为“upiPatt”的正则表达式。

  • 步骤3 - 使用empty()方法检查字符串是否为空。如果是,则返回false。

  • 步骤4 - 使用“regex_match()”方法,并将UPI字符串作为第一个参数,正则表达式作为第二个参数。如果该方法返回true,则从函数返回true。否则,返回false。

示例

以下是各种编程语言中此操作的实现:

#include <stdio.h>
#include <stdbool.h>
#include <string.h>
#include <regex.h>

bool validateUPI(char* upi) {
   regex_t upiPatt;
   int ret;

   // Compile the regular expression
   ret = regcomp(&upiPatt, "^[0-9A-Za-z.-]{2,256}@[A-Za-z]{2,64}$", REG_EXTENDED);

   if (ret) {
      fprintf(stderr, "Could not compile regex\n");
      return false;
   }

   // Handling the empty string
   if (strlen(upi) == 0) {
      return false;
   }

   // Matching the UPI and regular expression
   ret = regexec(&upiPatt, upi, 0, NULL, 0);
   regfree(&upiPatt);

   if (!ret) {
      return true;
   } else {
      return false;
   }
}
int main() {
   char upi[] = "shubham@okaxis";
   if (validateUPI(upi)) {
      printf("Yes, it is a valid UPI ID!\n");
   } else {
      printf("No, it is not a valid UPI ID!\n");
   }
   return 0;
}

输出

Yes, it is a valid UPI ID!
#include <bits/stdc++.h>
#include <regex>
using namespace std;

bool validateUPI(string upi) {
   // Defining the regular expression
   const regex upiPatt("^[0-9A-Za-z.-]{2,256}@[A-Za-z]{2,64}$");
   
   // Handling the empty string
   if (upi.empty()) {
      return false;
   }
   
   // Matching the UPI and regular expression
   if (regex_match(upi, upiPatt)) {
      return true;
   } else {
      return false;
   }
}
int main() { 
   string upi = "shubham@okaxis";
   if (validateUPI(upi)) {
      cout << "Yes, it is a valid UPI ID!";
   } else {
      cout << "No, it is not a valid UPI ID!";
   }
   return 0;
}

输出

Yes, it is a valid UPI ID!
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Main {
   static boolean validateUPI(String upi) {
      Pattern upiPatt = Pattern.compile("^[0-9A-Za-z.-]{2,256}@[A-Za-z]{2,64}$");

      // Handling the empty string
      if (upi.isEmpty()) {
         return false;
      }

      // Matching the UPI and regular expression
      Matcher matcher = upiPatt.matcher(upi);
      if (matcher.matches()) {
         return true;
      } else {
         return false;
      }
   }

   public static void main(String[] args) {
      String upi = "shubham@okaxis";
      if (validateUPI(upi)) {
         System.out.println("Yes, it is a valid UPI ID!");
      } else {
         System.out.println("No, it is not a valid UPI ID!");
      }
   }
}

输出

Yes, it is a valid UPI ID!
import re

def validate_upi(upi):
   upi_patt = r"^[0-9A-Za-z.-]{2,256}@[A-Za-z]{2,64}$"

   # Handling the empty string
   if not upi:
      return False

   # Matching the UPI and regular expression
   if re.match(upi_patt, upi):
      return True
   else:
      return False

if __name__ == "__main__":
   upi = "shubham@okaxis"
   if validate_upi(upi):
      print("Yes, it is a valid UPI ID!")
   else:
      print("No, it is not a valid UPI ID!")

输出

Yes, it is a valid UPI ID!

时间复杂度 – O(N) 用于匹配模式。

空间复杂度 – O(1),因为我们不使用任何动态空间。

方法二

在这种方法中,我们将使用regex_search()方法使用正则表达式验证UPI ID。

算法

  • 步骤1 - 使用“regex”数据类型创建正则表达式。

  • 步骤2 - 如果字符串为空,则返回false。

  • 步骤3 - 将UPI和正则表达式作为regex_search()方法的参数来验证UPI ID。

  • 步骤4 - 根据regex_search()方法的返回值返回true或false。

示例

以下是上述方法的程序

#include <stdio.h>
#include <stdbool.h>
#include <regex.h>

bool checkForUPI(char* upi) {
   regex_t upiRegex;
    
   // Defining the regular expression
   if (regcomp(&upiRegex, "^[0-9A-Za-z.-]{2,256}@[A-Za-z]{2,64}$", REG_EXTENDED) != 0) {
      return false;
   }
    
   // For empty strings
   if (upi[0] == '\0') {
      return false;
   }

   // Using the regexec() method
   if (regexec(&upiRegex, upi, 0, NULL, 0) == 0) {
      regfree(&upiRegex);
      return true;
   } else {
      regfree(&upiRegex);
      return false;
   }
}

int main() {
   char upi[] = "abcd@oksbi";
   
   if (checkForUPI(upi)) {
      printf("Yes, it is a valid UPI ID!\n");
   } else {
      printf("No, it is not a valid UPI ID!\n");
   }
   
   return 0;
}	

输出

Yes, it is a valid UPI ID!
#include <bits/stdc++.h>
#include <regex>
using namespace std;

bool checkforUPI(string upi) {
   // Defining the regular expression
   const regex upiPatt("^[0-9A-Za-z.-]{2,256}@[A-Za-z]{2,64}$");
   
   // For empty strings
   if (upi == "") {
      return false;
   }
   
   // Using the regex_search() method
   if (regex_search(upi, upiPatt)) {
      return true;
   } else {
      return false;
   }
}
int main() { 
   string upi = "abcd@oksbi";
   if (checkforUPI(upi)) {
      cout << "Yes, it is a valid UPI ID!";
   } else {
      cout << "No, it is not a valid UPI ID!";
   }
   return 0;
}

输出

Yes, it is a valid UPI ID!
import java.util.regex.*;

public class Main {
   public static boolean checkForUPI(String upi) {
      // Defining the regular expression
      String upiPattern = "^[0-9A-Za-z.-]{2,256}@[A-Za-z]{2,64}$";
       
      // For empty strings
      if (upi.isEmpty()) {
         return false;
      }
       
      // Using the Pattern and Matcher classes
      Pattern pattern = Pattern.compile(upiPattern);
      Matcher matcher = pattern.matcher(upi);
       
      if (matcher.find()) {
         return true;
      } else {
         return false;
      }
   }

   public static void main(String[] args) {
      String upi = "abcd@oksbi";
      
      if (checkForUPI(upi)) {
         System.out.println("Yes, it is a valid UPI ID!");
      } else {
         System.out.println("No, it is not a valid UPI ID!");
      }
   }
}

输出

Yes, it is a valid UPI ID!
import re

def check_for_upi(upi):
   # Defining the regular expression
   upi_pattern = r"^[0-9A-Za-z.-]{2,256}@[A-Za-z]{2,64}$"
   
   # For empty strings
   if not upi:
      return False
   
   # Using the regex.search() method
   if re.search(upi_pattern, upi):
      return True
   else:
      return False

if __name__ == "__main__":
   upi = "abcd@oksbi"
    
   if check_for_upi(upi):
      print("Yes, it is a valid UPI ID!")
   else:
      print("No, it is not a valid UPI ID!")

输出

Yes, it is a valid UPI ID!

时间复杂度 – O(N) 用于验证UPI ID。

空间复杂度 – O(1)

regex_search()和regex_match()方法用于使用正则表达式验证字符串,但它们在输入字符串与模式的匹配行为方面存在一些细微差别。程序员可以使用任何方法来使用正则表达式验证UPI ID。

更新于:2023年10月27日

2K+ 次浏览

开启您的职业生涯

完成课程获得认证

开始
广告