Regular Expressions in CoffeeScript are Awesome
elijahmanor.com
elijahmanor.com
my $emailPattern = qr{ ^ #begin of line
([a-z0-9_.-]+) #one or more letters, numbers, _ . or -
@ #followed by an @ sign
([\da-z.-]+) #then one or more letters, numbers, _ . or -
\. #followed by a period
([a-z.]{2,6}) #followed by 2 to 6 letters or periods
$ }xi; #end of line and ignore case
if( 'john.smith@gmail.com' =~ $emailPattern ){
print "E-mail is valid\n";
} else {
print "E-mail is invalid\n";
}
EDIT: A much better way of doing it though: use Mail::Sendmail;
if( 'john.smith@gmail.com' =~ /$Mail::Sendmail::address_rx/ ){
print "E-mail is valid\n";
} else {
print "E-mail is invalid\n";
} use Email::Valid;
if (Email::Valid->address('john.smith@gmail.com')) {
print "E-mail is valid\n";
}
else { print "Email is invalid\n" }
ref: https://metacpan.org/module/Email::Valid var foo = new RegExp(
'\\d\+' + // First digit
'-' + // Delimiter
'\\d\+' // Second digit
);
foo.test("1234-5432");https://github.com/jashkenas/coffee-script/blob/master/src/l...
http://docs.python.org/library/re.html#re.VERBOSE
a = re.compile(r"""\d + # the integral part
\. # the decimal point
\d * # some fractional digits""", re.X)
b = re.compile(r"\d+\.\d*")PCRE isn't as good as Perl's regexps, but not bad. (I've helped people with PCRE problems that worked in Perl.)
Edit: I googled myself. :-) The Python lib isn't pcre (anymore), it is something home rolled. The answer to the parent question about inspiration is: Most everyone has copied the Perl syntax (except, irritatingly, Emacs).
Edit 2: herge -- Perl is ~ a superset of awk. Use that. (Check -n and -e flags in perldoc perlrun.)
For those using plain JavaScript -- or wanting to do a one-off conversion -- I wrote a simple JS function that converts an extended RegEx to a plain one:
http://blog.mackerron.com/2010/08/08/extended-multi-line-js-...
Nice function to convert annotated string to a regex. I wonder if this is being considered in the next versions of JavaScript? Or better yet... native annotation?
I like the CoffeeScript approach since that logic is done at compile time and not when it is being executed.
"()<>[]:;@,\\\"!#$%&'*+-/=?^_`{}| ~ ? ^_`{}|~."@example.org
is a perfectly valid email address [1]
[1] http://en.wikipedia.org/wiki/Email_address#Valid_email_addre...
AFAIK there are regular expressions that cover all valid email addresses (and some invalid, but better than not recognizing one that is valid).
Although it gets pretty nasty: http://www.diablotin.com/librairie/autres/mre/chBB.html
Wait, since when aren't they? I would have thought basic regex skills were a baseline shibboleth of a programmer. I even know several non-technical people that are proficient.
Jestful, off-the-wall comments aside, I love regex. It takes away a great deal of the drudgery associated with processing volumes and volumes of text. I can't imagine not having it.
(Aside: Now that you mention it, I can think of a couple people who aren't programmers who use regex pretty frequently because it makes their life a little easier even if it isn't highly advanced, super-dense regex.)
Even if they were compiled at runtime, the performance penalty would probably be negligible unless you were randomly compiling the expression in the middle of an inner loop or something equally silly.