17 lines
578 B
Python
17 lines
578 B
Python
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|9665)[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)
|