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_matchkiể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ệ.