3 ms·
>Suppose I enter the email address "geofft@example.net@example.com". It validates according to your rule. Where does it go? Slight word charge on the rule. "..
by Nadya 10y ago
>Suppose I enter the email address "geofft@example.net@example.com". It validates according to your rule. Where does it go?
Slight word charge on the rule. "..one and only one of which is @..." with characters within quotations ("") not being counted. Quotations need to be considered because this is a valid email address: [0]
`"very.(),:;<>[]\".VERY.\"very@\\ \"very\".unusual"@strange.example.com`
>Suppose, furthermore, that I upgrade my servers and they start parsing it differently. They're allowed to do that, right? Maybe my old MTA sent a confirmation email to example.net, and the new one is now sending emails to a user named "geofft@example.net" at example.com.
If you upgrade your servers and they parse incorrectly by inserting quotations where there were no quotations entered, then the parsing is bugged. Although the validation was bugged to begin with for allowing two delimiters in an email address.
Furthermore, if anyone uses an email that is so heavily eccentric just because it is "technically valid" I'm sure they don't expect their email to work most of the time.
[0] https://en.wikipedia.org/wiki/Email_address https://en.wikipedia.org/wiki/Email_address
- geofft 10y agoAha. Well, now we're approaching something more complex than /@/, aren't we? :) I will fully agree with the claim that a regex is the wrong way to validity-check an email, and I will easily believe that implementing the check you describe takes 5 kilobytes of regex. But a rule like "Exactly one un-quoted @ sign" or "Exactly one un-quoted @ sign, and the string on the right needs to be a well-formed domain name" or something is pretty simple in normal code. "Well-formed domain name" is an existing concept: one or more labels separated by dots, each of which contains only ASCII letters, digits, or hyphens, cannot start or end with a hyphen, and cannot be more than 63 characters long, and no more than 253 characters total. Again, not something I'd do with a regex, but a small number of lines of code.
- Nadya 10y agoI'm not the original person you were speaking with - sorry for any confusion. Although you have me curious how you would check with code without using regex.