snumpy
snumpy

Reputation: 2878

How to parse/trim email addresses from text

Similar to this question, but not sure how to implement in this case.

A trusted user (don't need to be concerned with validating input) is typing/pasting email addresses into a text field. On the blur event, I'd like to look at the text and clean up whatever he inputed (typically after copying and pasting a list of addresses from an email client).

"Bob Smith" <[email protected]>, [email protected], "John Doe"<[email protected]>

would be trimmed to:

[email protected], [email protected], [email protected]

Upvotes: 6

Views: 7293

Answers (5)

Joseph Marikle
Joseph Marikle

Reputation: 78520

You can use the .math() method to quickly parse out the emails into an array:

inputval.match(/[A-z0-9]+@[A-z0-9]+.[A-z]{2,3}/g)

If you want to then convert that to a string, you can add .join(', ') or .join('; ') to it. The regex is simplified. There are quite a few regular expressions out there to parse emails with, but the one above is a simplified version. It does not take into account subdomains, as pointed out in the comments below, or multipart TLDs (It also doesn't take into account the + symbol in the first part of the email address). Substitute with a regular expression that matches your needs.

Upvotes: 2

Shiv Shankar
Shiv Shankar

Reputation: 76

var emailList = userInput
    .replace(/[^,;]*.?</g, "")
    .replace(/>/g, "")
    .replace(/[,; ]{1,}/g, "\n")
    .replace(/[\n]{2,}/g, "\n")
    .split("\n")

This allows the email list to be provided in the following formats (including copy and paste email list from you Google To box):

"Bob Rob"<[email protected]>, [email protected]; [email protected] [email protected]

The email Ids can be separated by ,, ;, or newlines.

Upvotes: 3

Mark Biek
Mark Biek

Reputation: 150749

This regex should remove anything in double-quotes as well as < and > characters.

/".*?"|[<>]/

In Javascript, you might have something along these lines:

line.replace(/".*?"|[<>]/g, '');

Upvotes: 6

Jonathan M
Jonathan M

Reputation: 17451

myEmailList=userInput.match(/[a-zA-z0-9_.]+@[a-zA-Z0-9_.]+\.(com|org|whatever)/g);
myEmailListString=myEmailList.join(', ');

Or just do the first line if you're wanting an array of the email addresses.

Upvotes: -2

6502
6502

Reputation: 114481

Valid email address can be very strange, so I'd suggest to not forbidding anything in that field otherwise may be well possible that your program is useless because your users will not be able to send email to valid email addresses.

To read the whole story see this blog post or go for the RFC yourself.

Upvotes: 3

Related Questions