[python] 정규표현식을 이용한 신용카드 번호 형식인 문자열 검증

소개

이 문서에서는 Python의 정규표현식(Regular Expression)을 사용하여 신용카드 번호 형식인 문자열을 검증하는 방법에 대해 알아보겠습니다.

정규표현식

정규표현식은 특정 패턴을 찾거나 일치하는 문자열을 검색하는 데 사용되는 강력하고 유연한 도구입니다. 우리는 이를 사용하여 신용카드 번호의 형식을 검증할 수 있습니다.

다음은 신용카드 번호의 일반적인 형식입니다:

예제 코드

import re

def validate_credit_card(card_number):
    pattern = r"^(4\d{15}|5\d{15}|3[47]\d{13}|6011\d{12})$"
    return re.match(pattern, card_number) is not None

# 예제 신용카드 번호
card_numbers = [
    "4111111111111111",  # Visa
    "5111111111111111",  # MasterCard
    "371111111111114",  # American Express
    "6011111111111117",  # Discover
    "1234567890123456",  # 잘못된 형식
]

for card_number in card_numbers:
    if validate_credit_card(card_number):
        print(f"{card_number}: 유효한 신용카드 번호")
    else:
        print(f"{card_number}: 유효하지 않은 신용카드 번호")

해설

위의 코드에서 validate_credit_card 함수는 주어진 card_number가 신용카드 번호의 형식에 맞는지 검증합니다. 정규표현식 패턴 ^(4\d{15}|5\d{15}|3[47]\d{13}|6011\d{12})$은 신용카드 번호의 형식을 나타냅니다. 이 패턴은 4로 시작하는 16자리 숫자, 5로 시작하는 16자리 숫자, 34 또는 37로 시작하는 15자리 숫자, 6011로 시작하는 16자리 숫자를 모두 포함합니다.

위의 예제는 주어진 신용카드 번호 리스트에 대해 신용카드 번호의 유효성을 검증하고 결과를 출력합니다.

결론

정규표현식은 Python의 강력한 도구로서 신용카드 번호와 같은 형식을 검증하는 데 사용할 수 있습니다. 이를 통해 올바른 형식의 문자열을 추출하여 신용카드 번호를 확인할 수 있습니다.

참고 자료