Regex to Match Email address
There are many edge cases to e-mail address structure that you will exclude if you try the simplest approach.

One I use that accepts most of the reasonably acceptable e-mail address looks like:

^(?:[w!#$%&amp;'*+-/=?^`{|}~]+.)*[w!#$%&amp;'*+-/=?^`{|}~]+@(?:(?:(?:[a-zA-Z0-9](?:[a-zA-Z0-9-](?!.)){0,61}[a-zA-Z0-9]?.)+[a-zA-Z0-9](?:[a-zA-Z0-9-](?!$)){0,61}[a-zA-Z0-9]?)|(?:[(?:(?:[01]?d{1,2}|2[0-4]d|25[0-5]).){3}(?:[01]?d{1,2}|2[0-4]d|25[0-5])]))$


which is preferable to the supposedly correct one:

(?&lt;user&gt;(?:(?:[^ \t\(\)\&lt;\&gt;@,;\:\\\"\.\[\]\r\n]+)|(?:\"(?:(?:[^\"\\\r\n])|(?:\\.))*\"))(?:\.(?:(?:[^ \t\(\)\&lt;\&gt;@,;\:\\\"\.\[\]\r\n]+)|(?:\"(?:(?:[^\"\\\r\n])|(?:\\.))*\")))*)@(?&lt;domain&gt;(?:(?:[^ \t\(\)\&lt;\&gt;@,;\:\\\"\.\[\]\r\n]+)|(?:\[(?:(?:[^\[\]\\\r\n])|(?:\\.))*\]))(?:\.(?:(?:[^ \t\(\)\&lt;\&gt;@,;\:\\\"\.\[\]\r\n]+)|(?:\[(?:(?:[^\[\]\\\r\n])|(?:\\.))*\])))*)


Note that all of the following addresses are perfectly acceptable as e-mail addresses:

        "Someone@Somewhere.co.uk",
        "Somebody{MiddleName}Surname@Somewhere.co.uk",
        "abc.\"defghi\".xyz@example.com",
        "Someone@[192.168.0.1]",
        "niceandsimple@example.com",
        "simplewith+symbol@example.com",
        "less.common@example.com",
        "a.little.more.unusual@dept.example.com",
        "user@[IPv6:2001:db8:1ff::a0b:dbd0]",
        "\"much.more unusual\"@example.com",
        "\"very.unusual.@.unusual.com\"@example.com",
        "\"very.(),:;&lt;&gt;[]\\\".VERY.\\\"very@\\ \\\"very\\\".unusual\"@strange.example.com",
        "0@a",
        "!#$%&amp;'*+-/=?^_`{}|~@example.org",
        "\"()&lt;&gt;[]:,;@\\\\\\\"!#$%&amp;'*+-/=?^_`{}| ~  ? ^_`{}|~.a\"@example.org",
        "\"\"@example.org",
        "postbox@com",


The first regex only accepts some of these - only the second accepts all.

See here for a very good narrative on the subject.