如何使用正则表达式检查Aadhaar号码是否有效?


简介

在本C++ 教程中,我们将使用正则表达式检查输入的Aadhaar号码是否有效。正则表达式或regex用于字符串中的模式匹配或字符串搜索算法。其功能在<regex>头文件中定义。它与regex关键字一起使用,后跟一个变量。印度公民被签发Aadhaar号码,这是一个唯一的身份号码。它是一个12位的唯一号码,并且没有两个人拥有相同的AADHAAR号码。

语法

regex regular_expression_patternname
return regex_match(value, regular_expression_patternname);

在本教程中,为了检查Aadhaar号码的有效性,我们考虑Aadhaar号码的以下规则:

  • Aadhaar号码应为12位数字。

  • 每4个数字后应有一个空格。

  • Aadhaar号码不能以0或1或特殊字符开头。

  • Aadhaar号码不能包含任何字母或特殊字符。

  • Aadhaar号码只能包含数字。

示例1

Input = String = "1243 5670 0784"
Output = Input number is a valid aadhar number

解释

在上面的输入字符串中,输入字符串遵循Aadhaar卡的所有列出规则。因此,它是一个有效的Aadhaar号码。

示例2

Input = String = "1265 A093 5438"
Output = The input string is invalid aadhar number

解释

在上面的输入字符串中,含有一个字母,而Aadhaar卡号码不包含任何字母。此号码不是有效的Aadhaar号码。

示例3

Input = String = "0987 2345 6453"
Output = The input number is invalid Aadhar number

解释

在上面的输入字符串中,它以0开头,而Aadhaar卡号码不能以0开头。此号码不是有效的Aadhaar号码。

算法

  • 初始化一个12位数字的字符串。

  • 定义遵循有效Aadhaar号码所有规则的正则表达式。

    • 正则表达式如下所示: ("^[2-9][0-9]{3}\s[0-9]{4}\s[0-9]{4}$")

    • 这里:

    • ^ 表示字符串的开头

    • [2-9] 是字符串的第一个数字。

    • [0-9]{3} 是字符串接下来的3位数字。

    • \s 表示空格。

    • [0-9]{3} 是字符串接下来的3位数字。

    • \s 表示空格。

    • [0-9]{4} 表示字符串接下来的4位数字。

  • $ 表示字符串的结尾。

  • 将输入字符串与正则表达式匹配。

打印字符串匹配的结果。

示例1

#include <iostream>
#include <regex>
using namespace std;

//user-defined function for checking the input string
bool isAadhaarValid(const string& aadhaarVar) {
   // Regular expression defining the rules of valid aadhar number
   regex aadharPattern("^[2-9][0-9]{3} [0-9]{4} [0-9]{4}$");

   return regex_match(aadhaarVar, aadharPattern);
}

int main() {
   // initialize the input string 
   string aadhaarVar = "0175 9834 6012";

   //conditional statement calling function 
   if (isAadhaarValid(aadhaarVar)){
      cout << aadhaarVar << "  is Valid Aadhaar number." <<endl;
   } else {
      cout << aadhaarVar <<" is Invalid Aadhaar number." << endl;
   }

   return 0;
}

我们通过定义包含Aadhaar号码所有规则的正则表达式来实现本教程的问题陈述。在这种情况下,正则表达式与输入字符串匹配。在正则表达式中使用空格来表示Aadhaar号码中的空格。使用条件语句来打印结果。

0175 9834 6012 is Invalid Aadhaar number

输出

示例2

#include <iostream>
#include <regex>
using namespace std;
 
// user defined function for checking the input string number
bool isAadhaarNumberValid(string strNum) {
 
   // regular expression defining rules for the valid Aadhar number
   const regex stringPattern("^[2-9]{1}[0-9]{3}\s[0-9]{4}\s[0-9]{4}$");
 
   // When the input string is empty, return false
   if (strNum.empty()){
      return false;
   }
 
   //conditional statement for checking the string matching
   if(regex_match(strNum, stringPattern)){
      return true;
   } else {
      return false;
   }
}
 
//  Code controller
int main(){
   // string number 1
   string strNum1 = "1265 A093 5438";

   //calling function
   cout << isAadhaarNumberValid(strNum1) << endl;
 
   // string number 2
   string strNum2 = "2435 5670 0784";
   cout << isAadhaarNumberValid(strNum2) << endl;
 
   // string number 3
   string strNum3 = "0987 2345 6453";
   cout << isAadhaarNumberValid(strNum3) << endl;
 
   // string number 4
   string strNum4 = "2675 23476 23 0";
   cout << isAadhaarNumberValid(strNum4) << endl;
 
   // string number 5
   string strNum5 = "2134569847";
   cout << isAadhaarNumberValid(strNum5) << endl;
   return 0;
}

我们通过定义包含Aadhaar号码所有规则的正则表达式来实现本教程的问题陈述。在这种情况下,正则表达式与输入字符串匹配。在正则表达式中使用空格来表示Aadhaar号码中的空格。使用条件语句来打印结果。

0
1
0
0
0

我们通过C++实现检查输入字符串是否为有效Aadhaar号码的任务。为Aadhaar号码规则定义正则表达式。对于Aadhaar号码中的空格,使用特殊符号“\s”。使用多个字符串来检查它们是否为有效的Aadhaar号码。

结论

如何使用Python正则表达式从文本中提取浮点数?

开启你的职业生涯

完成课程获得认证
打印页面