регулярное выражение для 4 или 6 значного pin кода


def validate_pin(pin):
    if re.search('^\d{4}$|^\d{6}$', pin):
        return True
    else:
        return False

требуется чтоб выражение не находило "граничные" случаи например 098765' также '5862

upd: требуется найти исключительно 4 или 6 цифр и ничего кроме этого


Ответы (1 шт):

Автор решения: becouse

Вот такое регулярное выражение работает

^([0-9]{4})$|^([0-9]{6})$

Пример кода

import re

regex = r"^([0-9]{4})$|^([0-9]{6})$"

test_str = ("012345\n"
    "1234\n"
    "'1234\n"
    "j3322\n"
    "2333'")

matches = re.finditer(regex, test_str, re.MULTILINE)
→ Ссылка