from django.core.validators import RegexValidator from django.utils.translation import gettext_lazy as _ import re class SaudiPhoneNumberValidator(RegexValidator): def __init__(self, *args, **kwargs): super().__init__( regex=r"^(\+9665|05)[0-9]{8}$", message=_("Enter a valid Saudi phone number (05XXXXXXXX or +9665XXXXXXXX)"), ) def __call__(self, value): # Remove any whitespace, dashes, or other separators cleaned_value = re.sub(r"[\s\-\(\)\.]", "", str(value)) super().__call__(cleaned_value)