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


大多數信用卡和簽帳金融卡背面(美國運通卡正面)都有一個三位數或四位數的號碼,稱為卡驗證值 (CVV),也稱為 CVV2 和 CSC(卡安全碼)。

CVV 碼是一種安全機制,用於確保進行購買的人擁有有效的卡。它的開發是為了幫助防止未經授權的交易。通常在網上購物、電話購物或無需實體卡的情況下需要 CVV 碼。

方法

使用正則表示式驗證 CVV 碼的方法如下:

  • 針對三位數CVV碼

  • 針對四位數CVV碼

方法 1:針對三位數 CVV 碼

大多數信用卡和簽帳金融卡背面都印有安全特徵。此特徵是一個三位數的號碼,稱為 CVV 或卡驗證值程式碼,用於在網上或電話購物時(無需實體卡)驗證卡的有效性。如果任何給定的輸入符合已確認的 CVV 程式碼配置格式,則可以使用正則表示式識別它。

正則表示式是一種字元序列,指定搜尋模式。在 CVV 號碼的情況下,可以使用正則表示式來驗證輸入是否包含三位數字。

語法

使用正則表示式驗證三位數 CVV 程式碼的語法如下:

^\d {3}$

其中,d 代表任何數字字元,3 代表前一個字元(數字)應出現的精確次數,$ 表示字串的結尾。

此正則表示式模式匹配恰好包含三個數字的字串,這正是三位數 CVV 程式碼的格式。它可以用來檢查使用者輸入的準確性,並確保 CVV 程式碼以正確的格式輸入。

演算法

使用正則表示式驗證三位數 CVV 程式碼的演算法:

步驟 1 - 建立與三位數匹配的正則表示式模式。“d{3}”是正確的模式,其中“d”代表任何數字,“{3}”表示必須正好有三個數字。

步驟 2 - 設計一個檢查 CVV 程式碼的方法。該函式應在接收字串作為輸入後返回一個布林值,指示該字串是否與 CVV 模式匹配。

步驟 3 - 在方法中使用 Python 的 re 模組編譯正則表示式模式。例如,“cvv_pattern = re.compile(r'\d{3}')”。

步驟 4 - 使用已編譯模式的 match() 方法檢查輸入字串是否與 CVV 模式匹配。例如,“match = cvv_pattern.match(input_str)” 。

步驟 5 - 如果匹配成功(即輸入字串符合 CVV 模式),則返回 True;否則返回 False。

示例 1

C++ 中如何使用正則表示式自動驗證三位數 CVV 程式碼的示例。

在此示例中,示例 CVV 程式碼最初定義為字串變數。然後,使用語法 [0-9]{3},我們構建一個與任何三位數字序列匹配的正則表示式模式。

使用 std::regex_match() 函式將正則表示式模式與 CVV 程式碼進行比較。如果 CVV 程式碼與模式匹配,則我們列印“有效 CVV 程式碼”;否則,我們顯示“無效 CVV 程式碼”。

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

int main() {
   std::string cvv = "123"; // Example CVV code
   std::regex cvv_regex("[0-9]{3}");

   if (std::regex_match(cvv, cvv_regex)) {
      std::cout << "Valid CVV code\n";
   } else {
      std::cout << "Invalid CVV code\n";
   }
   return 0;
}

輸出

Valid CVV code

方法 2:針對四位數 CVV 碼

在信用卡和簽帳金融卡領域,四位數 CVV 程式碼是卡驗證值 (CVV) 的一種變體。雖然大多數持卡人只使用三位數的 CVV 程式碼,但美國運通卡是使用四位數程式碼的例外。透過應用正則表示式,使用者可以確保任何正確輸入的四位數 CVV 號碼都能有效驗證。

語法

可用於驗證四位數 CVV 程式碼的正則表示式的語法:

^\d {4}$

此正則表示式的分解如下:

  • ^ - 字串開頭

  • \d - 任何數字 (0-9)

  • {4} - 恰好四次

  • $ - 字串結尾

此正則表示式只識別總共恰好包含四個數字的字串。如果使用者輸入的 CVV 程式碼不是正好四位數並且包含任何非數字字元,則 CVV 程式碼將被輸出為無效,因為正則表示式將不匹配。

演算法

使用正則表示式驗證四位數 CVV 程式碼的分步演算法:

步驟 1 - 建立一個將與四位數匹配的正則表示式模式。該模式的公式是 \d{4},對應於任何四位數字的序列。

步驟 2 - 獲取使用者的 CVV 程式碼。

步驟 3 - 使用正則表示式模式來檢視 CVV 程式碼是否與模式匹配。例如,可以使用 Python 中的 re.match() 函式將 CVV 程式碼與模式進行比較。

步驟 4 - 如果 CVV 程式碼與模式匹配,則它是一個有效的四位數 CVV 程式碼。現在可以執行交易。

步驟 5 - 如果 CVV 程式碼與模式不匹配,則它不是有效的四位數 CVV 程式碼。可以向用戶列印錯誤訊息並列印在螢幕上,提示輸入有效的 CVV 程式碼。

示例 2

這是一個 C++ 示例,演示如何使用正則表示式驗證四位數 CVV 程式碼,無需使用者輸入。

在此示例中,我們使用 std::regex 類構建一個與四位數字匹配的正則表示式模式。cvv_regex 變數儲存該模式。

std::regex_match 函式用於查詢 cvv 字串是否與 cvv_regex 模式匹配。如果字串符合模式,則 CVV 程式碼被認為是有效的;否則,它被確認無效。

#include <iostream>
#include <regex>

int main() {
   std::string cvv = "124"; // The CVV code to validate

   // Regular Expression to match 4-digit numbers
   std::regex cvv_regex("\b\d{4}\b");

   if (std::regex_match(cvv, cvv_regex)) {
      std::cout << "Valid CVV code." << std::endl;
   } else {
      std::cout << "Invalid CVV code." << std::endl;
   }
   return 0;
}

輸出

Invalid CVV code.

結論

使用正則表示式驗證 CVV 號碼有助於確保輸入的格式正確且滿足有效 CVV 的條件。CVV 模式通常由正則表示式“\b\d{3,4}\b”表示,它匹配包含在單詞邊界中的三位或四位數字字串。開發人員可以透過根據此正則表示式檢查 CVV 輸入來增強信用卡和簽帳金融卡交易的安全性。

更新於:2023年7月31日

684 次瀏覽

開啟你的職業生涯

完成課程獲得認證

開始學習
廣告