[c++] C++에서의 규칙에 맞는 문자열 검증하는 방법

C++에서 문자열을 검증하는 방법은 규칙에 따라 문자열을 분석하고 조건을 충족시키는지 확인하는 과정을 포함합니다. 예를 들어, 전화번호, 이메일 주소, 또는 비밀번호와 같은 형식에 맞는지 검증할 수 있습니다.

전화번호 형식 검증

전화번호의 형식을 확인하려면 정규 표현식(Regular Expression)을 사용할 수 있습니다. 다음은 C++에서 전화번호 형식을 검증하는 예제 코드입니다.

#include <iostream>
#include <regex>

int main() {
    std::string phoneNumber = "010-1234-5678";
    std::regex pattern("(\\d{3}-\\d{4}-\\d{4})");
    
    if (std::regex_match(phoneNumber, pattern)) {
        std::cout << "Valid phone number" << std::endl;
    } else {
        std::cout << "Invalid phone number" << std::endl;
    }
    
    return 0;
}

이 예제 코드는 “010-1234-5678”과 같은 형식의 전화번호를 검증합니다. std::regex_match 함수를 사용하여 정규 표현식과 문자열을 비교합니다.

이메일 주소 형식 검증

이메일 주소의 형식을 확인하기 위해서도 정규 표현식을 사용할 수 있습니다. 다음은 C++에서 이메일 주소 형식을 검증하는 예제 코드입니다.

#include <iostream>
#include <regex>

int main() {
    std::string emailAddress = "example@email.com";
    std::regex pattern("([a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,})");
    
    if (std::regex_match(emailAddress, pattern)) {
        std::cout << "Valid email address" << std::endl;
    } else {
        std::cout << "Invalid email address" << std::endl;
    }
    
    return 0;
}

이 예제 코드는 “example@email.com”과 같은 형식의 이메일 주소를 검증합니다.

비밀번호 형식 검증

비밀번호의 형식을 확인할 때는 문자열의 길이와 특수문자, 숫자, 대소문자 등의 조건을 확인할 수 있습니다. 다음은 C++에서 비밀번호 형식을 검증하는 예제 코드입니다.

#include <iostream>
#include <cctype>

bool isPasswordValid(const std::string& password) {
    if (password.length() < 8) {
        return false;
    }
    
    bool hasDigit = false;
    bool hasUpper = false;
    bool hasLower = false;
    bool hasSpecial = false;
    
    for (char c : password) {
        if (std::isdigit(c)) {
            hasDigit = true;
        } else if (std::isupper(c)) {
            hasUpper = true;
        } else if (std::islower(c)) {
            hasLower = true;
        } else if (c == '!' || c == '@' || c == '#' || c == '$' || c == '%' || c == '^' || c == '&' || c == '*') {
            hasSpecial = true;
        }
    }
    
    return hasDigit && hasUpper && hasLower && hasSpecial;
}

int main() {
    std::string password = "Password123!";
    
    if (isPasswordValid(password)) {
        std::cout << "Valid password" << std::endl;
    } else {
        std::cout << "Invalid password" << std::endl;
    }
    
    return 0;
}

이 예제 코드는 비밀번호가 8자 이상이고 숫자, 대문자, 소문자, 특수문자를 각각 포함하는지 확인합니다.

C++에서는 정규 표현식과 문자열 조작 함수들을 활용하여 다양한 형식의 문자열을 검증할 수 있습니다.

참고 자료