如何使用正則表示式驗證IFSC程式碼?


印度金融系統程式碼的縮寫。參與電子資金轉賬系統的印度銀行分支機構由一個特殊的11位字元程式碼標識。印度儲備銀行使用此程式碼在網際網路交易期間在銀行之間轉移資金。IFSC程式碼有兩個部分。前四個字元標識銀行,後六個字元標識分支機構。NEFT(國家電子資金轉賬)、RTGS(即時全額結算)和IMPS(即時支付服務)只是需要IFSC程式碼的幾種電子交易。

方法

使用正則表示式驗證IFSC程式碼的一些常用方法:

  • 檢查正確的長度。

  • 檢查前四個字元。

  • 檢查第五個字元。

  • 檢查最後六個字元。

方法1:檢查正確的長度

IFSC程式碼應由11個字元組成。可以使用以下正則表示式來檢查長度:

^.{11}$

此正則表示式匹配任何11個字元。

語法

使用正則表示式驗證IFSC程式碼時,可以使用以下語法檢查正確的長度:

^([A-Z]{4}[0][A-Z0-9]{6})$ 
  • ^  匹配字串的開頭

  • ([A-Z]{4}  匹配IFSC程式碼的前4個字元,應為大寫字母

  • [0]  匹配IFSC程式碼的第五個字元,應為零

  • [A-Z0-9]{6}  匹配IFSC程式碼的最後6個字元,可以是大寫字母或數字。

  • $  匹配字串的結尾

此正則表示式確保IFSC程式碼總共有11個字元,包括4個大寫字母、一個零和6個大寫字母或數字。

演算法

以下是使用正則表示式驗證IFSC程式碼長度的詳細步驟:

步驟1 - 描述IFSC程式碼的正則表示式模式:IFSC程式碼是一個11位字母數字程式碼。前四個字元表示銀行程式碼,後六個字元表示分支機構程式碼,第五個字元始終為零。IFSC程式碼的正則表示式模式如下:

[A-Z]{4}[0] [A-Z0-9]{6} $

步驟2 - 檢查正則表示式模式:可以使用regex101.com和regexr.com等線上正則表示式測試器來測試正則表示式模式。將模式輸入測試器,然後輸入IFSC程式碼以檢查其是否與模式匹配。

步驟3 - 驗證IFSC程式碼的長度:在進行模式測試後,必須驗證IFSC程式碼的長度。Python中的len()方法可以用來確定IFSC程式碼是否為所需的精確11個字元。

步驟4 - 使用正則表示式模式:確定長度後,可以使用正則表示式模式來確定IFSC程式碼的格式是否符合預期。在Python中,使用re模組將模式應用於IFSC程式碼。

示例1

在本例中,使用正則表示式[A-Z]{4}0[A-Z0-9]{6}$驗證IFSC程式碼。正則表示式匹配以下模式:

  • 程式碼的前四個字母(來自[A-Z]{4})必須是大寫字母。

  • 第五個字元必須是數字零(0)。

  • 最後六個字元([A-Z0-9]{6}$)可以是大寫字母或數字。

使用regex_match函式匹配ifsc_code字串和正則表示式。如果字串與正則表示式匹配,則程式碼被認為有效。否則無效。

#include <iostream>
#include <regex>

using namespace std;

int main() {
   string ifsc_code = "SBIN0000123"; // Example IFSC code
   regex ifsc_regex("^[A-Z]{4}0[A-Z0-9]{6}$"); // Regular expression for IFSC code
    
   if (regex_match(ifsc_code, ifsc_regex)) {
      cout << "Valid IFSC code\n";
   } else {
      cout << "Invalid IFSC code\n";
   }
   return 0;
}

輸出

Valid IFSC code

方法2:檢查前四個字元

IFSC程式碼的前四個字元標識銀行。可以使用正則表示式來檢查前四個字元是否為字母。

^[A-Z]{4} 

此正則表示式匹配任何四個大寫字母。

語法

以下是檢查IFSC程式碼前四個字元的正則表示式:

^([A-Z]{4})

此正則表示式使用以下語法:

  • ^  匹配字串的開頭。

  • [A-Z]  匹配任何大寫字母。

  • {4}  指定前面的模式應該出現 exactly 四次。

  • ()  建立一個捕獲組以提取匹配的文字。

此正則表示式將匹配以 exactly 四個大寫字母開頭的任何字串。要驗證整個IFSC程式碼,需要檢查除前四個字元之外的其他條件。

演算法

以下是使用正則表示式驗證IFSC程式碼前四個字元的分步演算法:

步驟1 - 指定IFSC程式碼前四個字元的正則表示式模式。前四個字元只能使用字母,前兩個代表銀行程式碼,後兩個代表位置程式碼。這可以用正則表示式[A-Z]{4}表示。

步驟2 - 獲取需要驗證的輸入IFSC程式碼。

步驟3 - 提取輸入IFSC程式碼的前四個字元。

步驟4 - 使用正則表示式match()函式驗證提取的前四個字元是否符合指定的模式。如果匹配成功,則驗證成功,輸入IFSC程式碼被認為有效。如果沒有匹配,則驗證失敗,輸入IFSC程式碼被認為無效。

注意:此演算法只檢查IFSC程式碼的前四個字元。完整的IFSC程式碼驗證需要對其餘字元進行額外檢查。

示例2

在這個例子中,我們要驗證的IFSC程式碼由字串“ifsc_code”表示。然後,根據IFSC程式碼格式,我們使用std::regex類構建一個正則表示式模式,該模式匹配以四個字母開頭的任何字串。

然後使用std::regex_search函式檢查ifsc_code字串是否與正則表示式模式匹配。如果匹配,則輸出一條訊息,說明IFSC程式碼有效。如果不匹配,則輸出一條訊息,說明IFSC程式碼無效。

#include <iostream>
#include <regex>

int main() {
   std::string ifsc_code = "ABCD123456";
   std::regex pattern("^[A-Za-z]{4}");
  
   if (std::regex_search(ifsc_code, pattern)) {
      std::cout << "IFSC code is valid." << std::endl;
   } else {
      std::cout << "IFSC code is invalid." << std::endl;
   }
   return 0;
}

輸出

IFSC code is valid.

方法3:檢查第五個字元

IFSC程式碼的第五個字元是零(0),保留供將來使用。可以使用正則表示式來檢查第五個字元是否為零。

^.{4}0

此正則表示式匹配任何四個字元後跟一個零。

語法

要使用正則表示式檢查第五個字元並驗證IFSC程式碼,可以使用以下通用語法:

^[A-Z]{4}[0]{1}[A-Z0-9]{6}$
  • ^$  分別表示字串的開頭和結尾,確保整個字串與模式匹配。

  • [A-Z]{4}  匹配 exactly 四個大寫字母字元。這表示銀行程式碼。

  • [0]{1} 匹配 exactly 一個零。這表示IFSC程式碼中的第五個字元。

  • [A-Z0-9]{6} 匹配 exactly 六個字元,可以是大寫字母或數字。這表示分支機構程式碼。

  • 因此,總的來說,該模式匹配一個以四個大寫字母開頭,後跟一個零,最後以六個大寫字母或數字結尾的IFSC程式碼。

演算法

以下是一個使用正則表示式檢查IFSC程式碼第五個字元的演算法:

步驟1 - 輸入IFSC程式碼。

步驟2 - 定義IFSC程式碼的正則表示式模式:"^. {4}.{1}.*$"

步驟3 - 使用正則表示式模式匹配輸入的IFSC程式碼。

步驟4 - 如果匹配:

  • 獲取IFSC程式碼的第五個字元。

  • 根據您的條件檢查第五個字元是否有效(例如,特定範圍的字元、特定字元等)。

  • 如果第五個字元有效:- 輸出“IFSC程式碼有效”。

  • 如果第五個字元無效:- 輸出“IFSC程式碼無效”。

步驟5 - 如果不匹配:

  • 輸出“IFSC程式碼無效”。

示例3

一個C++示例,演示如何使用正則表示式(無需使用者輸入)來檢查IFSC程式碼的第五個字元

在這個例子中,IFSC程式碼“SBIN0001234”用作示例程式碼。為了匹配IFSC程式碼結構,使用了[A-Za-z]{4}0[A-Z0-9]{6}$的正則表示式模式。如果程式碼符合模式,則提取第五個字元並進行驗證。如果第五個字元是大寫字母字元,則接受。否則無效。

#include <iostream>
#include <regex>

int main() {
   std::string ifscCode = "SBIN0001234"; // Example IFSC code

   // Regular expression pattern to match IFSC code
   std::regex pattern("^[A-Za-z]{4}0[A-Z0-9]{6}$");

   // Check if the IFSC code matches the pattern
   if (std::regex_match(ifscCode, pattern)) {
      // Extract the fifth character
      char fifthCharacter = ifscCode[4];

      // Perform validation on the fifth character
      if (std::isalpha(fifthCharacter) && std::isupper(fifthCharacter)) {
         std::cout << "Fifth character is valid: " << fifthCharacter << std::endl;
      } else {
         std::cout << "Fifth character is invalid: " << fifthCharacter << std::endl;
      }
   } else {
      std::cout << "Invalid IFSC code." << std::endl;
   }
   return 0;
}

輸出

Fifth character is invalid: 0

方法4:檢查最後六個字元

IFSC程式碼的最後六個字元標識分支機構。可以使用正則表示式來檢查最後六個字元是否為字母數字字元。

^.{4}[A-Z0-9]{6}$

此正則表示式匹配任何四個字元後跟六個字母數字字元。

透過組合上述正則表示式,可以建立一個正則表示式來驗證整個IFSC程式碼。

^[A-Z]{4}0[A-Z0-9]{6}$

此正則表示式匹配任何有效的IFSC程式碼。

語法

正則表示式模式^[A-Z]{4}\d{6}$由以下部分組成:

  • ^ 指示字串的開頭。

  • [A-Z]{4} 匹配 exactly 四個大寫字母字元。

  • \d{6} 匹配 exactly 六個數字。

  • $ 指示字串的結尾。

演算法

要使用正則表示式檢查IFSC程式碼的最後六個字元,可以按照以下演算法:

步驟 1 − 定義一個正則表示式模式,用於匹配IFSC程式碼的最後六個字元。例如,模式可以是“[A-Z0-9]{6}”。

步驟 2 − 建立一個用於測試的樣本IFSC程式碼列表。這些程式碼應該是有效的IFSC程式碼。

步驟 3 − 對於列表中的每個IFSC程式碼 −

提取IFSC程式碼的最後六個字元。

使用正則表示式模式匹配提取的字元。

如果匹配成功,則最後六個字元有效。

如果匹配失敗,則最後六個字元無效。

步驟 4 − 列印每個IFSC程式碼的結果(有效或無效)。

示例 4

這裡,我們定義了一個正則表示式模式[A-Z0-9]{6}$,它匹配任何大寫字母 (A-Z) 或數字 (0-9) 的集合,正好六次 (6),位於字串末尾 ($)。然後,為了檢視ifscCode字串是否與模式匹配,我們使用std::regex_match()。在這種情況下,我們輸出“IFSC程式碼有效”,而在沒有匹配的情況下,我們輸出“IFSC程式碼無效”。

#include <iostream>
#include <regex>

int main() {
   std::string ifscCode = "SBIN0001234";  // Example IFSC code

   // Regular expression pattern to match the last six characters of an IFSC code
   std::regex pattern("[A-Z0-9]{6}$");

   // Checking if the last six characters of the IFSC code match the pattern
   if (std::regex_match(ifscCode, pattern)) {
      std::cout << "IFSC code is valid." << std::endl;
   } else {
      std::cout << "IFSC code is invalid." << std::endl;
   }
   return 0;
}

輸出

IFSC code is invalid.

結論

總之,利用正則表示式驗證IFSC程式碼是一種實用且有效的技術,可以確保程式碼格式正確。任何不符合所需模式的輸入都可以使用正則表示式來定義IFSC程式碼必須遵循的模式,將其標記為無效。

在應用正則表示式驗證IFSC程式碼之前,務必理解程式碼的格式和結構。IFSC程式碼的前四個字元代表銀行程式碼,接下來的六個字元代表分支機構程式碼,第五個字元為零。

更新於:2023年8月1日

2K+ 次瀏覽

開啟您的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.