var str = "sdhdhh@gmail.com"; // true but coming false var str1 = "sdhdhh@gmail.co.uk"; var str2 = "sdhdhh@gmail.org"; var str3 = "sdhdhh@gmail.org.uk"; 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));¿Alguien puede decirme cuál es el error? Mi ejemplo de .com no funciona correctamente.
Necesitas
^ al comienzo del patrón, ya que necesita tanto ^ como $ para que el patrón coincida con toda la cadena.Así que necesitas usar
var patt = /^[a-z0-9._%+-]+@[a-z0-9.-]+?(?:\.com|\.org|\.co\.uk|\.org\.uk)$/;Vea la demostración de expresiones regulares .
Si necesita que no se distinga entre mayúsculas y minúsculas, agregue i flag,
var patt = /^[a-z0-9._%+-]+@[a-z0-9.-]+?(?:\.com|\.org|\.co\.uk|\.org\.uk)$/i;