4 ms·
> because those who can benefit from this kind of basic regexp examples are also those who will not understand the limitations. I share your sentiment. The art
by jsrn 15y ago
> because those who can benefit from this kind of basic regexp examples are also those who will not understand the limitations.
I share your sentiment. The article is certainly useful for learning regexps. But IMHO it should also point to the correct way of doing things - often, the correct way is using a module and thus the resulting code is not much longer than the code in the article. For email address validation:
use Email::Valid;
print (Email::Valid->address('john@example.com') ? 'valid' : 'invalid');
as a oneliner:
perl -MEmail::Valid -E"say (Email::Valid->address('john@example.com') ? 'valid' : 'invalid');"
Other than installing the Email::Valid module with a
cpanm Email::Valid
it is not much longer than the example in the article.
https://metacpan.org/module/Email::Valid https://metacpan.org/module/Email::Valid
- DanielShir 15y agoI guess you guys just read the code and not the text: `Notice that I say "looks like". It doesn't guarantee it is an email address.` And yeah, you can find the full regular expression in the back of one of O'Reilly's Perl books (the regular expression handbook I believe). It's nice to see perl code from time to time, even if it's just one line :)
- jsrn 15y agoPoint taken - what I primarily wanted to show is that the correct way is not much longer than the "looks like" solution. Yes, the Regexp is long, but it is nicely encapsulated in the Email::Valid module.
- zby 15y agoYeah - I've read only the first sentence. I think many of those that will find that article from google and even use that code will also not pay much attention to that weak disclaimer. Also these were not the only problems with his code - see the comments at that page (in particular: http://www.catonmat.net/c/35784 http://www.catonmat.net/c/35784). But the more important point is that an article that sounds so authoritative should present much higher quality.
- dcosson 15y agoBut I doubt someone new to regexps would understand what "looks like" means in that context. For instance they might think "ok, so something like 'abc@efg.xyz' matches, even though it's not a real email address." They might not think to consider that a full sentence like "hey, I'll see you tomorrow @ 2. Can't wait!" also matches. That said, perl one-liners are certainly useful so thanks to the OP for putting this together. I just think it would add a lot of value to include examples of where one is likely to go wrong.
- pkrumins 15y agoGood point. I updated article with a note about Email::Valid.