Validating email

Hi   I have a mailid like test@123.com@ As part of email validation

I have to check it user@123.com So I did

"test@123.com@@".split('@') So I get ['test','123.com'] But if it were test@123.com the expected validation is correct But the lase two @ signs are not recognized by split So how can check that after 123.com still there is @ sign and declare my validation as failed?

Sijo

Sijo Kg wrote:

Hi   I have a mailid like test@123.com@ As part of email validation

I have to check it user@123.com So I did

"test@123.com@@".split('@') So I get ['test','123.com'] But if it were test@123.com the expected validation is correct But the lase two @ signs are not recognized by split So how can check that after 123.com still there is @ sign and declare my validation as failed?

Sijo   

I can't explain why it doesn't recognize but you could add something to the end of the address and split.

irb(main):014:0> a = 'test@123.com@@' => "test@123.com@@" irb(main):015:0> a.split('@') => ["test", "123.com"] irb(main):016:0> a = a + 'trash' => "test@123.com@@trash" irb(main):017:0> a.split('@') => ["test", "123.com", "", "trash"] irb(main):018:0>

Hope this helps.

Cheers, Mohit. 11/7/2008 | 5:29 PM.

Hi    This is not the required solution Suppose the user enters test@123.com@@ or test@123.com@ what happens? Since we cant insists that there should be value after @ or @@

Thanks Sijo

Hi This is not the required solution Suppose the user enters test@123.com@@ or test@123.com@ what happens? Since we cant insists that there should be value after @ or @@

Use tmail to validate your email :slight_smile:

It will raise an exception on basically anything except a correct address.

And I would recommend not using an ‘@’ symbol to symbolize anything in an email address. It is the key component that separates the local from the domain part of the email address and you will always run into problems.

You can see how here:

http://www.lindsaar.net/2008/4/14/tip-4-detecting-a-valid-email-address

require ‘tmail’

=> true

TMail::Address.parse(‘test@123.com@@’)

TMail::SyntaxError: parse error on token “@”

from parser.y:379:in `on_error'

from (irb):2:in `_racc_yyparse_c'

from parser.y:375:in `scan'

from parser.y:375:in `parse_in'

from racc/parser.rb:152:in `_racc_yyparse_c'

from racc/parser.rb:152:in `__send__'

from racc/parser.rb:152:in `yyparse'

from parser.y:366:in `parse'

from parser.y:344:in `parse'

from /Library/Ruby/Gems/1.8/gems/tmail-1.2.3.1/lib/tmail/address.rb:84:in `parse'

from (irb):2

TMail::Address.parse(‘test@123.com@’)

TMail::SyntaxError: parse error on token “@”

from parser.y:379:in `on_error'

from (irb):3:in `_racc_yyparse_c'

from parser.y:375:in `scan'

from parser.y:375:in `parse_in'

from racc/parser.rb:152:in `_racc_yyparse_c'

from racc/parser.rb:152:in `__send__'

from racc/parser.rb:152:in `yyparse'

from parser.y:366:in `parse'

from parser.y:344:in `parse'

from /Library/Ruby/Gems/1.8/gems/tmail-1.2.3.1/lib/tmail/address.rb:84:in `parse'

from (irb):3

TMail::Address.parse(‘test@123.com’)

=> #<TMail::Address test@123.com>

Hi     Thanks for the reply..But when i tried from script/console reslut was like

TMail::Address.parse('test@123.com@') => #<TMail::Address test@123.com@>

TMail::Address.parse('test@123.com@@')

=> #<TMail::Address test@123.com@>

             Why this happens?

Sijo

Thanks for the reply…But when i tried from script/console reslut

was like

TMail::Address.parse(‘test@123.com@’)

=> #<TMail::Address test@123.com@>

TMail::Address.parse(‘test@123.com@@’)

=> #<TMail::Address test@123.com@>

What version of TMail is that?

TMail::VERSION::STRING

=> “1.2.3”

Mikel

In my current project, I’m using the regexp from http://www.regular-expressions.info/email.html with validates_format_of to validate email addresses.

Regards, Craig

Hi

When in console typed TMail::VERSION::STRING I got error

NameError: uninitialized constant TMail

     So wont Tmail be installed as part of Rails?

Sijo

Hey yo -

Another contender... I use this one:

http://tfletcher.com/lib/rfc822.rb

usage: validates_format_of :email, :with => RFC822::EmailAddress