4 ms·
Check that its a string containing '@' with at least one character before and after the @ symbol is usually the only sensible thing to do. This is exactly what
by __ryan__ 4y ago
Check that its a string containing '@' with at least one character before and after the @ symbol is usually the only sensible thing to do.
This is exactly what the regex in the example is doing.
- papercrane 4y agoThe regex is ^[^@\s]+@\S+$ This would reject valid email addresses using quoted parts like john."@".doe@valid.example. Edit: Looking at it closely it looks like the attempt is to reject anything with an '@' in the user part, which would be an error (e.g. john."@".doe@valid.example). Except since "\S+" also includes '@' this regex will still work, but by accident. It would reject the valid email john."\ ".doe@valid.example
- __ryan__ 4y agoI don't think that's true. In JS: /^[^@\s]+@\S+$/.test("john.\"@\".doe@valid.example") == true Edit: Hmm, I see what you mean. At first glance I thought it was just checking that it didn't start with @ or whitespace.
- papercrane 4y agoSorry, I edited my comment and then noticed you replied already. It's working by accident since the '\S+' will match the second '@', but if you had a quoted space in the user it would not work e.g. john."\ ".doe@valid.example, but would work with john.@.doe@invalid.example which I believe the regex is author meant to be caught as invalid.