[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

validate email address?

Eric H.

1/31/2008 4:13:00 PM

Anyone have a code snippet that tells whether an email address is
"valid" but not necessarily whether it is a working address because that
much I can sort out through my mail server through any bounces.

I have a database of addresses where the person entering the data has a
bad, bad, bad, BAD habit of not validating them before entering them and
so I get things like "***DO NOT SHARE DATA***" and "lmnopaol.com" and
the like. It's not my company or else she'd be going over all the
entries by hand.

Thanks in advance
7 Answers

Dominik Honnef

1/31/2008 5:13:00 PM

0

On [Fri, 01.02.2008 01:14], Eric H. wrote:
> Anyone have a code snippet that tells whether an email address is
> "valid" but not necessarily whether it is a working address because that
> much I can sort out through my mail server through any bounces.
>
> I have a database of addresses where the person entering the data has a
> bad, bad, bad, BAD habit of not validating them before entering them and
> so I get things like "***DO NOT SHARE DATA***" and "lmnopaol.com" and
> the like. It's not my company or else she'd be going over all the
> entries by hand.
>
> Thanks in advance

email = "email@host.tld"
email2 = "email@h@ost.tld"

email =~ /^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/i
#=> true/0
email2 =~ /^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/i
#=> nil/false

I hope that helped.
(That strange looking thing is called a regular expression)
--
Dominik Honnef


Gregory Seidman

1/31/2008 5:14:00 PM

0

On Fri, Feb 01, 2008 at 01:14:56AM +0900, Eric H. wrote:
> Anyone have a code snippet that tells whether an email address is
> "valid" but not necessarily whether it is a working address because that
> much I can sort out through my mail server through any bounces.
>
> I have a database of addresses where the person entering the data has a
> bad, bad, bad, BAD habit of not validating them before entering them and
> so I get things like "***DO NOT SHARE DATA***" and "lmnopaol.com" and
> the like. It's not my company or else she'd be going over all the
> entries by hand.

See http://www.regular-expressions.info/...

> Thanks in advance
--Greg


Phrogz

1/31/2008 6:52:00 PM

0

On Jan 31, 10:12 am, Dominik Honnef <domini...@gmx.net> wrote:
> On [Fri, 01.02.2008 01:14], Eric H. wrote:
>
> > Anyone have a code snippet that tells whether an email address is
> > "valid" but not necessarily whether it is a working address because that
> > much I can sort out through my mail server through any bounces.
>
> > I have a database of addresses where the person entering the data has a
> > bad, bad, bad, BAD habit of not validating them before entering them and
> > so I get things like "***DO NOT SHARE DATA***" and "lmnopaol.com" and
> > the like. It's not my company or else she'd be going over all the
> > entries by hand.
>
> > Thanks in advance
>
> email = "em...@host.tld"
> email2 = "email@h...@ost.tld"
>
> email =~ /^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/i
> #=> true/0
> email2 =~ /^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/i
> #=> nil/false

One of my email addresses is:
!@phrogz.net
This is completely valid, and not even very crazy. The proliferation
of half-assed regular expressions like the above prevents me from
using that address on lots of web sites.

You cannot EXACTLY validate the syntax of an email address using only
regular expressions. You can get close, but you need a much better
regexp than the above.

Here are some more syntactically valid email addresses:
"Me Here"@phrogz.net
phrogz@[69.46.18.236]
phrogz@(go)[69.46.18.236](me(yeah))

ara.t.howard

1/31/2008 7:00:00 PM

0


On Jan 31, 2008, at 11:55 AM, Phrogz wrote:

> Here are some more syntactically valid email addresses:
> "Me Here"@phrogz.net
> phrogz@[69.46.18.236]
> phrogz@(go)[69.46.18.236](me(yeah))

one approach i've used:

address.scan( %r/[^@]+/ ).size == 2

;-)

a @ http://codeforp...
--
share your knowledge. it's a way to achieve immortality.
h.h. the 14th dalai lama



Dingding Ye

1/31/2008 7:07:00 PM

0

module ActiveRecord
module Validations
module ClassMethods
# Validates whether the value of the specified attribute is a
valid email address
#
# class User < ActiveRecord::Base
# validates_email_format_of :email, :on => :create
# end
#
# Configuration options:
# * <tt>message</tt> - A custom error message (default is: "
does not appear to be a valid e-mail address")
# * <tt>on</tt> Specifies when this validation is active
(default is :save, other options :create, :update)
# * <tt>if</tt> - Specifies a method, proc or string to call to
determine if the validation should
# occur (e.g. :if => :allow_validation, or :if => Proc.new {
|user| user.signup_step > 2 }). The
# method, proc or string should return or evaluate to a true
or false value.
def validates_email_format_of(*attr_names)
configuration = { :message => ' does not appear to be a valid
e-mail address',
:on => :save,
:with =>
/^(([A-Za-z0-9]+_+)|([A-Za-z0-9]+\-+)|([A-Za-z0-9]+\.+)|([A-Za-z0-9]+\++))*[A-Za-z0-9]+@((\w+\-+)|(\w+\.))*\w{1,63}\.[a-zA-Z]{2,6}$/i
}

configuration.update(attr_names.pop) if attr_names.last.is_a?(Hash)

validates_each(attr_names, configuration) do |record, attr_name, value|
record.errors.add(attr_name, configuration[:message]) unless
value.to_s =~ configuration[:with]
end
end
end
end
end


On Feb 1, 2008 12:14 AM, Eric H. <REMOVE-CAPSburnFORout@setmdaiiol.com> wrote:
> Anyone have a code snippet that tells whether an email address is
> "valid" but not necessarily whether it is a working address because that
> much I can sort out through my mail server through any bounces.
>
> I have a database of addresses where the person entering the data has a
> bad, bad, bad, BAD habit of not validating them before entering them and
> so I get things like "***DO NOT SHARE DATA***" and "lmnopaol.com" and
> the like. It's not my company or else she'd be going over all the
> entries by hand.
>
> Thanks in advance
>
>

Dominik Honnef

1/31/2008 7:11:00 PM

0

On [Fri, 01.02.2008 03:55], Phrogz wrote:
> On Jan 31, 10:12 am, Dominik Honnef <domini...@gmx.net> wrote:
> > On [Fri, 01.02.2008 01:14], Eric H. wrote:
> >
> > > Anyone have a code snippet that tells whether an email address is
> > > "valid" but not necessarily whether it is a working address because that
> > > much I can sort out through my mail server through any bounces.
> >
> > > I have a database of addresses where the person entering the data has a
> > > bad, bad, bad, BAD habit of not validating them before entering them and
> > > so I get things like "***DO NOT SHARE DATA***" and "lmnopaol.com" and
> > > the like. It's not my company or else she'd be going over all the
> > > entries by hand.
> >
> > > Thanks in advance
> >
> > email = "em...@host.tld"
> > email2 = "email@h...@ost.tld"
> >
> > email =~ /^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/i
> > #=> true/0
> > email2 =~ /^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/i
> > #=> nil/false
>
> One of my email addresses is:
> !@phrogz.net
> This is completely valid, and not even very crazy. The proliferation
> of half-assed regular expressions like the above prevents me from
> using that address on lots of web sites.
>
> You cannot EXACTLY validate the syntax of an email address using only
> regular expressions. You can get close, but you need a much better
> regexp than the above.
>
> Here are some more syntactically valid email addresses:
> "Me Here"@phrogz.net
> phrogz@[69.46.18.236]
> phrogz@(go)[69.46.18.236](me(yeah))

And as nearly no website nor many email clients (i even believe, that some email servers will fail on this adresses)
can handle this kind of email addresses, it shouldn't be a huge problem to use this regex.
Of course it isn't the best solution, but it probably covers about 99% of all valid email adresses.
And i prefer covering 99% of valid adresses over allowing a lot more invalid adresses.
--
Dominik Honnef


Eric H.

1/31/2008 8:05:00 PM

0

Dominik Honnef wrote:

> I hope that helped.
> (That strange looking thing is called a regular expression)

Looks fine. Go figure that I've been programming for decades and to this
day I still haven't managed to learn regex but I only ever need it once
every 5 years or so.