Finalmente maycolalvarez, seguí tu consejo, después de mucho pensar, darle vueltas y mirar muchas expresiones regulares, se me encendió una lucecita y ya sé por qué la expresión que me diste era mucho mejor, la primera no contemplaba caracteres que si contempla la segunda. Y te he hecho caso también con lo que me dijiste del alert, además de solucionar lo del campo vacío. Finalmente se ha quedado así y creo que funciona bien, por si a alguien le sirve ;) Por cierto, este código me lo facilitó el miembro jmabreu, todo el mérito es suyo y es un hacha.
Código PHP:
function mostrar_informacion(txt){
//comprobacion de correo
var b= /^([a-zA-ZñÑ0-9_.-])+@(([a-zA-Z0-9-])+.)+([a-zA-Z0-9]{2,4})+$/;
if (form.email.value == "")
{
return true;
}else{
if (! b.test(txt) ) {
alert('no válido');
return b.test(txt)
}
}
}
<form action="" name="form" id="form" onSubmit="return mostrar_informacion(this.email.value)"> </form>
Eso es todo, gracias por la ayuda. De todas formas, si tenéis algún otro comentario para mejorarlo, se agradece. Saludossss