2013/7/4 Marcelo da Silva <[email protected]>
>
> Pessoal, tenho a seguinte função:
>
> -- Function: fvalidaemail(text)
>
> -- DROP FUNCTION fvalidaemail(text);
>
> CREATE OR REPLACE FUNCTION fvalidaemail(text)
>   RETURNS boolean AS
> $BODY$select $1 ~ '^[^@\s]+@[^@\s]+(\.[^@\s]+)+
as result
> $BODY$
>   LANGUAGE sql VOLATILE
>   COST 100;
> ALTER FUNCTION fvalidaemail(text)
>   OWNER TO postgres;
>
>
> Peguei esta função na Web, mas tem algo estranho, ela está considerando
emails abaixo como Falso
>
> Emails:
> [email protected]
> [email protected]
> [email protected]
> [email protected]
> etc
>
> Olhei bastante e não vi nada de errado com os emails citados
>

Marcelo,

Fiz alguns testes com sua função e emails (abaixo resultados) e não
encontrei problemas
com a mesma.

fabrizio=# CREATE OR REPLACE FUNCTION fvalidaemail(text)
fabrizio-#   RETURNS boolean AS
fabrizio-# $BODY$select $1 ~ '^[^@\s]+@[^@\s]+(\.[^@\s]+)+$' as result
fabrizio$# $BODY$
fabrizio-#   LANGUAGE sql VOLATILE
fabrizio-#   COST 100;
CREATE FUNCTION
fabrizio=#
fabrizio=#
fabrizio=# SELECT fvalidaemail('[email protected]');
 fvalidaemail
--------------
 t
(1 row)

fabrizio=# SELECT fvalidaemail('[email protected]');
 fvalidaemail
--------------
 t
(1 row)

fabrizio=# SELECT fvalidaemail('[email protected]');
 fvalidaemail
--------------
 t
(1 row)

fabrizio=# SELECT fvalidaemail('[email protected]');
 fvalidaemail
--------------
 t
(1 row)


Tem também um outro regex que pode ser usado, veja:

CREATE OR REPLACE FUNCTION fvalidaemail(text)
  RETURNS boolean AS
$BODY$select $1 ~ '^[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+[.][A-Za-z]+$' as result
$BODY$
  LANGUAGE sql VOLATILE
  COST 100;


Espero ter ajudado.

Att,

--
Fabrízio de Royes Mello
Consultoria/Coaching PostgreSQL
>> Blog sobre TI: http://fabriziomello.blogspot.com
>> Perfil Linkedin: http://br.linkedin.com/in/fabriziomello
>> Twitter: http://twitter.com/fabriziomello
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a