| |
| |
|
|
| #pragma once |
|
|
| #include <QRegularExpression> |
| #include <QString> |
| #include <QValidator> |
|
|
| class Validation { |
| public: |
| Validation() |
| : room_name(room_name_regex), nickname(nickname_regex), ip(ip_regex), port(0, UINT16_MAX) {} |
|
|
| ~Validation() = default; |
|
|
| const QValidator* GetRoomName() const { |
| return &room_name; |
| } |
| const QValidator* GetNickname() const { |
| return &nickname; |
| } |
| const QValidator* GetIP() const { |
| return &ip; |
| } |
| const QValidator* GetPort() const { |
| return &port; |
| } |
|
|
| private: |
| |
| QRegularExpression room_name_regex = |
| QRegularExpression(QStringLiteral("^[a-zA-Z0-9._ -]{4,20}")); |
| QRegularExpressionValidator room_name; |
|
|
| |
| const QRegularExpression nickname_regex = |
| QRegularExpression(QStringLiteral("^[a-zA-Z0-9._ -]{4,20}")); |
| QRegularExpressionValidator nickname; |
|
|
| |
| QRegularExpression ip_regex = QRegularExpression(QStringLiteral( |
| |
| "^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$|" |
| |
| "^((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|" |
| "(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-" |
| "5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|" |
| "(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)" |
| "(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|" |
| "(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]" |
| "\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|" |
| "(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[" |
| "0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|" |
| "(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[" |
| "0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|" |
| "(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[" |
| "0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|" |
| "(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?" |
| "\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:)))(%.+)?$|" |
| |
| "^([a-zA-Z0-9]+(-[a-zA-Z0-9]+)*\\.)+[a-zA-Z]{2,}$")); |
| QRegularExpressionValidator ip; |
|
|
| |
| QIntValidator port; |
| }; |
|
|