如何使用正則表示式驗證印度護照號碼?


印度護照號碼是一種特殊的字母數字程式碼,由印度政府頒發給印度護照持有人。護照號碼由 8 到 12 個字元組成,可能包含字母和數字。護照號碼的前兩個字元表示護照型別,例如 P 代表普通護照,D 代表外交護照,S 代表公務護照。接下來的兩個字元代表發放護照機構的程式碼,後面跟著一串數字,作為護照持有人的特殊識別碼。印度護照號碼通常印在護照的個人資訊頁上,並在出國旅行時用於身份識別。

方法

以下方法可用於使用正則表示式驗證印度護照號碼:

  • 識別印度護照號碼的格式

  • 驗證正則表示式模式

方法 1:驗證正則表示式模式

建立此正則表示式模式後,我們可以使用印度護照號碼的示例集對其進行驗證,以確保它符合所需的格式。

語法

// Define the Regular Expression pattern for an Indian passport number
regex pattern("[PDS][A-Z]{2}\d{4}[A-Z0-9]{2}");

// Compile the Regular Expression pattern
regex passport_regex(pattern);

// Test the validity of the Indian passport number
string passport_number = "P1234A5678";
bool is_valid_passport = regex_match(passport_number, passport_regex);

演算法

以下演算法展示瞭如何使用正則表示式驗證印度護照號碼:

步驟 1 - 確定與印度護照號碼相對應的正則表示式模式,一個真實的印度護照號碼由八個或九個字元組成,可能包含字母和數字。第一個字元為字母,然後是六位數字,然後是字母或數字結尾。

步驟 2 - 使用正則表示式引擎編譯正則表示式模式。它將生成一個正則表示式物件,可用於將字串與模式進行比較。

步驟 3 - 從使用者輸入中選擇與印度護照號碼相對應的字串。

步驟 4 - 使用在步驟 2 中建立的正則表示式物件,將正則表示式模式應用於輸入字串。這將確定輸入字串是否符合模式。

步驟 5 - 如果模式和輸入字串匹配,則護照號碼有效。輸入字串必須與模式完全匹配,護照號碼才有效。

示例 1

此示例中的 validate Passport Number () 函式接受一個表示印度護照號碼的字串引數,並返回一個布林值,指示該字串是否與正則表示式模式匹配。與正則表示式模式匹配的字串是一個大寫字母后跟七個數字,定義為 "[A-Z]1[0-9]7$"。使用 regex_match () 函式將護照號碼與正則表示式模式進行比較。如果匹配模式,則該函式返回 true,表示護照號碼有效。如果護照號碼無效,則返回 false,否則返回 false。為了符合印度護照號碼,在 main () 函式中使用了準確的 Passport Number 方法。

#include <iostream>
#include <regex>
#include <string>

using namespace std;

bool validatePassportNumber(string passportNumber) {
   regex pattern("^[A-Z]{1}[0-9]{7}$");
   // The pattern shows the format of the Indian passport number, here the first character is a capital letter and the next 7 characters are digits.

   if (regex_match(passportNumber, pattern)) {
      return true;
   }
   return false;
}

int main() {
   string passportNumber = "A1234567"; // Indian Passport Number to be validated
   if (validatePassportNumber(passportNumber)) {
      cout << "Valid Indian Passport Number" << endl;
   }
   else {
      cout << "Invalid Indian Passport Number" << endl;
   }
   return 0;
}

輸出

Valid Indian Passport Number

方法 2. 識別印度護照號碼的格式

它由 8 到 12 個字元組成,可以包含字母和數字。前兩個字元表示護照型別,後面跟著一串數字和發放護照機構的程式碼。兩種方法的語法和演算法都相同。

示例 2

當然!以下 C++ 程式碼片段說明了如何使用正則表示式驗證印度護照號碼:

在此示例中,我們定義了一個與印度護照號碼格式相對應的正則表示式的模式。然後使用 "regex" 包中的 regex_match () 函式來測試針對一些示例護照號碼的模式。控制檯列印驗證結果。

請注意,在此示例中,護照號碼在程式碼中作為字串硬編碼,因此沒有使用者輸入。在實際應用中,您可能需要透過使用者輸入或其他外部來源獲取護照號碼。

#include <iostream>
#include <regex>

using namespace std;

int main() {
   // Define a regular expression pattern for Indian Passport numbers
   regex pattern("^[A-PR-WY][1-9]\d\s?\d{4}[1-9]$");

   // Test some example passport numbers
   string passport1 = "Z1234567";   // Invalid
   string passport2 = "A12345678";  // Invalid
   string passport3 = "P1234567";   // Valid
   string passport4 = "M123 4567";  // Valid

   // Validate the passport numbers using the regular expression pattern
   bool valid1 = regex_match(passport1, pattern);
   bool valid2 = regex_match(passport2, pattern);
   bool valid3 = regex_match(passport3, pattern);
   bool valid4 = regex_match(passport4, pattern);

   // Print the validation results
   cout << "Passport 1 is " << (valid1 ? "valid" : "invalid") << endl;
   cout << "Passport 2 is " << (valid2 ? "valid" : "invalid") << endl;
   cout << "Passport 3 is " << (valid3 ? "valid" : "invalid") << endl;
   cout << "Passport 4 is " << (valid4 ? "valid" : "invalid") << endl;

   return 0;
}

輸出

Passport 1 is invalid
Passport 2 is invalid
Passport 3 is invalid
Passport 4 is invalid

結論

總之,可以使用正則表示式來驗證印度護照號碼。可以使用正則表示式檢查印度護照號碼的格式和結構,包括護照型別、發放護照機構程式碼以及護照持有人的識別號碼。正則表示式可用於快速可靠地驗證印度護照號碼,這在簽證申請和移民程式等多種情況下非常有用。

更新於: 2023年7月31日

5K+ 瀏覽量

啟動你的 職業生涯

透過完成課程獲得認證

開始學習
廣告