const regex = /(?!.*\.{2})^(?![^@]{11})([a-z\d!#$%&'*+\-\/=?^_`{|}~\u00A0]+(\.[a-z\d!#$%&'*+\-\/=?^_`{|}~\u00A0]+)*|"((([ \t]*\r\n)?[ \t]+)?([\x01-\x08\x0b\x0c\x0e-\x1f\x7f\x21\x23-\x5b\x5d-\x7e\u00A0]|\\[\x01-\x09\x0b\x0c\x0d-\x7f\u00A0]))*(([ \t]*\r\n)?[ \t]+)?")@(([a-z\d\u00A0]|[a-z\d\u00A0][a-z\d\-._~\u00A0]*[a-z\d\u00A0])\.)+([a-z\u00A0]|[a-z\u00A0][a-z\d\-._~\u00A0]*[a-z\u00A0])\.?$/gm;
// Alternative syntax using RegExp constructor
// const regex = new RegExp('(?!.*\\.{2})^(?![^@]{11})([a-z\\d!#$%&\'*+\\-\\\/=?^_`{|}~\\u00A0]+(\\.[a-z\\d!#$%&\'*+\\-\\\/=?^_`{|}~\\u00A0]+)*|"((([ \\t]*\\r\\n)?[ \\t]+)?([\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f\\x21\\x23-\\x5b\\x5d-\\x7e\\u00A0]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f\\u00A0]))*(([ \\t]*\\r\\n)?[ \\t]+)?")@(([a-z\\d\\u00A0]|[a-z\\d\\u00A0][a-z\\d\\-._~\\u00A0]*[a-z\\d\\u00A0])\\.)+([a-z\\u00A0]|[a-z\\u00A0][a-z\\d\\-._~\\u00A0]*[a-z\\u00A0])\\.?$', 'gm')
const str = `abc@google.com
abcdefghij@google.com
abcdefghijk@google.com`;
// Reset `lastIndex` if this regex is defined globally
// regex.lastIndex = 0;
let m;
while ((m = regex.exec(str)) !== null) {
// This is necessary to avoid infinite loops with zero-width matches
if (m.index === regex.lastIndex) {
regex.lastIndex++;
}
// The result can be accessed through the `m`-variable.
m.forEach((match, groupIndex) => {
console.log(`Found match, group ${groupIndex}: ${match}`);
});
}
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for JavaScript, please visit: https://developer.mozilla.org/en/docs/Web/JavaScript/Guide/Regular_Expressions