C++ 使用正则表达式验证印度车牌号码

C++ 使用正则表达式验证印度车牌号码

在这个问题中,我们将使用正则表达式来验证印度车牌号码。

正则表达式是使用不同字符创建的搜索模式,可以用来匹配给定字符串中的特定模式。

问题描述 - 我们已经给出一个表示印度车牌号码的字符串。我们需要使用正则表达式来验证给定的字符串。

示例

输入

num1 = "GJ 03 AY 1097"

输出

Yes

说明 - 给定的车牌号码是有效的。

输入

num2 = "TN 1A3 PZ 1287"

输出

No

解释 - 给定的车牌号由于字符 ‘1A3’ 是无效的。

输入

num2 = "DL 29 KJX 0001"

输出

No

解释 - 由于’KJX’,给定的车牌号码无效。

方法1

有效的印度车牌号的示例为GJ 03 AY 1097。

  • 车牌号包含2个州编号。

  • 之后,它包含2位数字,代表区号。

  • 接下来,它包含1个或2个字母字符。

  • 最后,它包含4位数字。

用户可以按照以下正则表达式验证印度车牌号码。

“^[A-Z]{2}[ -]?[0-9]{2}[ -]?[A-Z]{1,2}[ -]?[0-9]{4}$”

让我们来理解这个正则表达式。

  • ^ – 它表示车牌号的开始。

  • [A – Z]{2} – 它应该包含2个大写字母字符。

  • [ -]? – 之后,它可以包含空格或连字符。

  • [0-9]{2}[ -]? – 它应该包含2位代表区号的数字。

  • [A-Z]{1,2} – 它应该包含1个或2个字母字符。

  • [0-9]{4}$ – 最后,它应该包含4个数字。

算法

步骤1 - 定义名为patt的正则表达式模式。

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

步骤3 - 使用regex_match()方法将车牌号字符串与’patt’验证。

步骤4 - 如果regex_match()方法返回true,则从函数返回’yes’。否则,从函数返回’No’。

示例

#include <bits/stdc++.h>
#include <regex>
using namespace std;

string checkForNumberPlate(string numPlate) {
   // Defining the regular expression
   const regex patt("^[A-Z]{2}[ -]?[0-9]{2}[ -]?[A-Z]{1,2}[ -]?[0-9]{4}$");
   // When the string is empty
   if (numPlate.empty()) {
      return "No";
   }
   // Return the answer after validating the number plate
   if (regex_match(numPlate, patt)) {
      return "Yes";
   } else {
      return "No";
   }
}
int main() {
   string num1 = "GJ 03 AY 1097";
   cout << "Is " << num1 << " Valid? - " << checkForNumberPlate(num1) << endl;   
   string num2 = "TN 1A3 PZ 1287";
   cout << "Is " << num2 << " Valid? - " << checkForNumberPlate(num2) << endl;
   return 0;
}

输出

Is GJ 03 AY 1097 Valid? - Yes
Is TN 1A3 PZ 1287 Valid? - No

时间复杂度-O(N)匹配模式。

空间复杂度-O(1),因为我们不使用任何额外的空间。

程序员可以尝试创建另一个正则表达式来验证印度车牌。例如,它不应该允许在正则表达式之间存在空格或连字符。此外,regex_search()方法可以使用正则表达式验证字符串。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程