Re: Select all invalid e-mail addresses
От | Andrus |
---|---|
Тема | Re: Select all invalid e-mail addresses |
Дата | |
Msg-id | djj7k3$289$2@news.hub.org обсуждение исходный текст |
Ответ на | Re: Select all invalid e-mail addresses ("Guy Rouillier" <guyr@masergy.com>) |
Ответы |
Re: Select all invalid e-mail addresses
|
Список | pgsql-general |
> SELECT email FROM customer > WHERE email !~* > '^[^@]*@(?:[^@]*\.)?[a-z0-9_-]+\.(?:a[defgilmnoqrstuwz]|b[abdefghijmnorstvwyz]|c[acdfghiklmnoruvxyz]|d[ejkmoz]|e[ceghrst]|f[ijkmorx]|g[abdefhilmnpqrstuwy]|h[kmnrtu]|i[delnoqrst]|j[mop]|k[eghimnprwyz]|l[abcikrstuvy]|m[acdghklmnopqrstuvwxyz]|n[acefgilopruz]|om|p[aefghklmnrtwy]|qa|r[eouw]|s[abcdeghijklmnortvyz]|t[cdfghjkmnoprtvwz]|u[agkmsyz]|v[aceginu]|w[fs]|y[etu]|z[amw]|edu|com|net|org|gov|mil|info|biz|coop|museum|aero|name|pro|mobi|arpa)$' > > ...should be closer. Fixes one typo in the range, uses valid pg format > regex, rather > than perl regex and had a couple of pedant-fixes in the TLDs supported. > > It's syntactically correct, and appears to do the right thing on my > production > DB here (which conincedentally has a customer table with an email field > :)), but > you should make sure you understand what the regex actually does. Steve, thank you again. I applied Michael hint about dollar quoting to this and tried create temp table customer ( email char(60)); insert into customer values( 'steve@blighty.com'); SELECT email FROM customer WHERE email !~* $$ ^[^@]*@(?:[^@]*\.)?[a-z0-9_-]+\.(?:a[defgilmnoqrstuwz]|b[abdefghijmnorstvwyz]|c[acdfghiklmnoruvxyz]|d[ejkmoz]|e[ceghrst]|f[ijkmorx]|g[abdefhilmnpqrstuwy]|h[kmnrtu]|i[delnoqrst]|j[mop]|k[eghimnprwyz]|l[abcikrstuvy]|m[acdghklmnopqrstuvwxyz]|n[acefgilopruz]|om|p[aefghklmnrtwy]|qa|r[eouw]|s[abcdeghijklmnortvyz]|t[cdfghjkmnoprtvwz]|u[agkmsyz]|v[aceginu]|w[fs]|y[etu]|z[amw]|edu|com|net|org|gov|mil|info|biz|coop|museum|aero|name|pro|mobi|arpa)$ $$ but this classifies e-mail address steve@blighty.com as invalid (select returns it). The same result are without dollar quoting, using your original select. Andrus.
В списке pgsql-general по дате отправления: