Si, como dice Torres es mas facil usar expresiones regulares para cualquier validación en PHP o javascript, pero se usan de manera diferente en ambas... pero antes de usar expresiones te recomiendo que leas un poco sobre que 'significan' solo así podrás después usar las tuyas sin necesidad de copy/paste.
Existen diferentes formas de validar, ya sea sensible a mayusculas o minisculas o no
un ejemplo:
preg_match('/'.$patron.'/', $cadena_texto);
donde: $patron es la expresion regular
y $cadena_texto es la queda a evaluar
<pre lang='php'>
$email="
[email protected]";
if (preg_match('/^[a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*[@][a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*[.][a-zA-Z]{2,4}$/',$email)) {
echo "Bien!";
} else {
echo "mal :(";
}
donde ^ es el inicio de la cadena
[a-zA-Z0-9_]+ donde puede haber letras desde a-z A-Z y numeros de 0-9 tambien un _ en el primer puesto el sigo + significa 1 o mas veces
Vemos ([.][a-zA-Z0-9_]+)*
donde: ( ) implican otro segmento a validar el * significa 0 o mas veces que puede existir o no.
vemos que esta un [.] esto es que si se va poner este segmento tiene que empezar por . después tenemos el mismo formato de a-z... es lo mismo
despues [@] que no tiene ni + ni * lo cual significa que es obligatorio 1 sola vez.
despues [a-zA-Z0-9_]+ q es lo mismo que ya vimos, quiere decir que despues del arroba puede haber 1 o + veces lo siguiente si no queires que aparezca un _ quitalo, y ya :)
ahora
([.][a-zA-Z0-9_]+)*[.][a-zA-Z]{2,4}
vemos que [.] es similar al arroba, tiene que estar obligatorio 1 vez
después tiene que seguir el mismo formato que ya analizamos [a-zA-Z0-9_]+ 1 o mas veces
luego todo esto encerrado por * ósea, que puede o no ester 0 o mas veces por aquellos corres que son
[email protected]
después tenemos un . obligatorio y cualquier letra de la a-zA-z de 2 a 4 veces osea que solo puede estar
[email protected] si pones
[email protected] marcara error tambien con
[email protected]
por que vemos que este ultimo supera el rango mencionado en {2,4} de 2 a 4, si lo quieres ampliar le pones mas al al segundo valor y ya :)
ah y el $ significa terminacion :p
Espero que a alguien le sirva, saludos