I wrote a simple function to combine regular expressions to make them debugging a bit more manageable.
var joinRegExp = function() {
var args = Array.prototype.slice.call(arguments);
return new RegExp(args.reduce(function(str, exp) {
return str + exp.toString().replace(/\//g, '');
}, ''));
};
So, you can break your expression into something like that.
var local = /[a-z0-9!#$%&'*+/=?^_`{|}~-]+/;
var localOpt = /(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*/;
var domain = /(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+/;
var tld = /(?:[A-Z]{2}|com|org|net|gov|mil|biz|info|mobi|name|aero|jobs|museum)\b/;
And join them.
var emailPattern = joinRegExp(local, localOpt, /@/, domain, tld);
You can check out this plunk for a demonstration.
source
share