Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Xác thực địa chỉ IPv6 bằng Regex trong C++

Cho địa chỉ IP, kiểm tra có phải IPv6 hợp lệ không dùng Regular Expression (ReGex). IPv6 hợp lệ: "XXXX:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX" với X là hex digit.

Ví dụ

IP="3001:0da8:82a3:0:0:8B2E:0270:7224" → Not (không hợp lệ)

IP="2001:0db8:85a3:0000:0000:8a2e:0370:7334" → IPv6 (hợp lệ)

Cách tiếp cận Regex

  • IPv6 có 8 trường, mỗi trường 1-4 ký tự hex
  • Pattern: ((([0-9a-fA-F]){1,4}):){7}([0-9a-fA-F]){1,4}
  • Dùng regex_match kiểm tra

Code C++

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

string validIPAddress(string IP) {
    regex ipv6("((([0-9a-fA-F]){1,4}):){7}([0-9a-fA-F]){1,4}");
    if (regex_match(IP, ipv6)) return "IPv6";
    else return "Not";
}

int main() {
    string IP = "3001:0da8:82a3:0:0:8B2E:0270:7224";
    cout << validIPAddress(IP) << endl;
    return 0;
}

Kết quả

Not

IP đầu vào không hợp lệ.