Search code examples
javascriptregexemailemail-validationaura.js

Regex not working on email domain selection properly


var str = "[email protected]"; // true but coming false
var str1 = "[email protected]"; 
var str2 = "[email protected]";
var str3 = "[email protected]";
var patt = new RegExp("[a-z0-9._%+-]+@[a-z0-9.-]+?[\.com]?[\.org]?[\.co.uk]?[\.org.uk]$");
console.log( str + " is " + patt.test(str));
console.log( str1 + " is " + patt.test(str1));
console.log( str2 + " is " + patt.test(str2));
console.log( str3 + " is " + patt.test(str3));

Can anyone tell me what is the mistake, my .com example is not working properly


Solution

  • You need

    • A grouping construct instead of character classes
    • A regex literal notation so that you do not have to double escape special chars
    • The ^ anchor at the start of the pattern since you need both ^ and $ to make the pattern match the entire string.

    So you need to use

    var patt = /^[a-z0-9._%+-]+@[a-z0-9.-]+?(?:\.com|\.org|\.co\.uk|\.org\.uk)$/;
    

    See the regex demo.

    If you need to make it case insensitive, add i flag,

    var patt = /^[a-z0-9._%+-]+@[a-z0-9.-]+?(?:\.com|\.org|\.co\.uk|\.org\.uk)$/i;