Scan string w regex .. and HNYTAOY!

HNYTAOY (Dry version of ... Happy New Year To All Of You)

I am trying to get an array of email addresses from a string , as this string is coming from an input textarea in a from, even if I ask for a blank between each address, users will also enter some return characters...

so I get something like :

to_string = "mister.sunnyday@acme.com\r\nmrs_applewhite@eden.com\r\njohn_doe@nowhere.com amy-millard@heavencanwait.com"

I know how to use a_string.scan(" "), but here I should use a regex.. after many try .. could not find the correct one..
could someone make 2007 starting on right tracks.... thanks a lot !!

joss

HNYTAOY (Dry version of ... Happy New Year To All Of You)

I am trying to get an array of email addresses from a string , as this string is coming from an input textarea in a from, even if I ask for a blank between each address, users will also enter some return characters...

so I get something like :

to_string = "mister.sunnyday@acme.com\r\nmrs_applewhite@eden.com\r\njohn_doe@nowhere.com amy-millard@heavencanwait.com"

I know how to use a_string.scan(" "), but here I should use a regex.. after many try .. could not find the correct one..
could someone make 2007 starting on right tracks.... thanks a lot !!

joss

forgot to mention what I wwrote until now :

···

On 2007-01-04 12:47:06 +0100, Josselin <josselin@wanadoo.fr> said:

to_string.split(%r{\r\n\s*}) which gives me teh addresses separated by \r\n , but I missed the addresses separated by spaces

I would just scan for email addresses. I got this:
  to_string.scan(/[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}/i)

From this site:
http://www.regular-expressions.info/email.html

Which seems to do the job reasonably well.
Happy new year to you too!
-Mat

···

On Jan 4, 2007, at 6:55 AM, Josselin wrote:

On 2007-01-04 12:47:06 +0100, Josselin <josselin@wanadoo.fr> said:

HNYTAOY (Dry version of ... Happy New Year To All Of You)
I am trying to get an array of email addresses from a string , as this string is coming from an input textarea in a from, even if I ask for a blank between each address, users will also enter some return characters...
so I get something like :
to_string = "mister.sunnyday@acme.com\r\nmrs_applewhite@eden.com\r\njohn_doe@nowhere.com amy-millard@heavencanwait.com"
I know how to use a_string.scan(" "), but here I should use a regex.. after many try .. could not find the correct one..
could someone make 2007 starting on right tracks.... thanks a lot !!
joss

forgot to mention what I wwrote until now :

to_string.split(%r{\r\n\s*}) which gives me teh addresses separated by \r\n , but I missed the addresses separated by spaces

You can split() on any whitespace characters with:

   to_string.split

That seems easier than a regex to match an email.

James Edward Gray II

···

On Jan 4, 2007, at 5:55 AM, Josselin wrote:

forgot to mention what I wwrote until now :

to_string.split(%r{\r\n\s*}) which gives me teh addresses separated by \r\n , but I missed the addresses separated by spaces

thanks Mat... I got it too.. my concern is getting all adresses in one array...
It seems that I could do a scan first to replace the \r\n by a space then doing a split on space character will give me the array
finally I'll use the regex to chexk each email address ( I am using a Rails plugin validates_as_email , based on RFC2822 with a possibility to perform an online checking if needed)

Joss

···

On 2007-01-04 13:07:32 +0100, Mat Schaffer <schapht@gmail.com> said:

On Jan 4, 2007, at 6:55 AM, Josselin wrote:

On 2007-01-04 12:47:06 +0100, Josselin <josselin@wanadoo.fr> said:

HNYTAOY (Dry version of ... Happy New Year To All Of You)
I am trying to get an array of email addresses from a string , as this string is coming from an input textarea in a from, even if I ask for a blank between each address, users will also enter some return characters...
so I get something like :
to_string = "mister.sunnyday@acme.com\r\nmrs_applewhite@eden.com\r \njohn_doe@nowhere.com amy-millard@heavencanwait.com"
I know how to use a_string.scan(" "), but here I should use a regex.. after many try .. could not find the correct one..
could someone make 2007 starting on right tracks.... thanks a lot !!
joss

forgot to mention what I wwrote until now :

to_string.split(%r{\r\n\s*}) which gives me teh addresses separated by \r\n , but I missed the addresses separated by spaces

I would just scan for email addresses. I got this:
  to_string.scan(/[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}/i)

From this site:
How to Find or Validate an Email Address

Which seems to do the job reasonably well.
Happy new year to you too!
-Mat

forgot to mention what I wwrote until now :

to_string.split(%r{\r\n\s*}) which gives me teh addresses separated by \r\n , but I missed the addresses separated by spaces

I would just scan for email addresses.

Yeah, that's what I'd also prefer over splitting.

> I got this:

to_string.scan(/[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}/i)

From this site:
How to Find or Validate an Email Address

Which seems to do the job reasonably well.

Hm, IMHO the domain part could be a bit better with respect to dots. Something like

(?:[A-Z0-9-]+\.)+[A-Z]{2,4}

In some circumstances something simple like this will even work

[^\s@]+@[^\s@]+

And I bet there is a ton of variants...

Cheers

  robert

···

On 04.01.2007 13:07, Mat Schaffer wrote:

On Jan 4, 2007, at 6:55 AM, Josselin wrote:

That's definitely easier. And more certain.

···

On 1/4/07, James Edward Gray II <james@grayproductions.net> wrote:

On Jan 4, 2007, at 5:55 AM, Josselin wrote:

> forgot to mention what I wwrote until now :
>
>> to_string.split(%r{\r\n\s*}) which gives me teh addresses
>> separated by \r\n , but I missed the addresses separated by spaces

You can split() on any whitespace characters with:

  to_string.split

That seems easier than a regex to match an email.

James Edward Gray II

/me slaps his forehead

agreed....
-Mat

···

On Jan 4, 2007, at 8:06 AM, James Edward Gray II wrote:

On Jan 4, 2007, at 5:55 AM, Josselin wrote:

forgot to mention what I wwrote until now :

to_string.split(%r{\r\n\s*}) which gives me teh addresses separated by \r\n , but I missed the addresses separated by spaces

You can split() on any whitespace characters with:

  to_string.split

That seems easier than a regex to match an email.