Closed omarkhan closed 8 years ago
Thanks for this PR, this annoyed me a little bit myself. Just for curiosity, why do you extract the Regex from the email field instead of hard coding it?
Just to keep it DRY.
your PR has been published in https://pypi.python.org/pypi/django-angular/0.8.2
Great, thanks for the quick response on this issue!
Background
Django's email validation is much stricter than Angular's. In particular, Angular allows any domain, including those without a tld:
This can cause the form to validate client-side but fail to validate on the server.
Proposal
Use the same regex as Django to validate email addresses.
Implementation
Django uses a combination of 3 regexes and some custom code to validate email addresses. Rather than try to replicate that logic exactly, I have added a
get_email_regex
method to theEmailFieldMixin
class that concatenates the user and domain regexes (including whitelisted domains) into a single javascript-compatible regex. This regex is then added to the input as theemail-pattern
attribute. If thevalidate-email
directive is included on the input element, this pattern will be used to validate email addresses instead of the Angular default email validation. For example:Caveats
-
character using a negative lookbehind. Javascript regexes do not support lookbehinds, so this is stripped.