var sp = "\\!\\#\\$\\%\\&\\'\\*\\+\\-\\/\\=\\?\\^\\_\\`\\{\\|\\}\\~";
var atext = "[a-zA-Z0-9" + sp + "]";
var atom = atext + "+"; //one or more atext chars
var dotAtom = "\\." + atom;
var localPart = atom + "(" + dotAtom + ")*"; //one atom followed by 0 or more dotAtoms.

var letter = "[a-zA-Z]";
var letDig = "[a-zA-Z0-9]";
var letDigHyp = "[a-zA-Z0-9-]";
var rfcLabel = letDig + letDigHyp + "{0,61}" + letDig;
var domain = rfcLabel + "(\\." + rfcLabel + ")*\\." + letter + "{2,6}";

var addrSpec = "^" + localPart + "@" + domain + "$";

var validEmail = new RegExp(addrSpec);