0

I have to write a Regex to fetch Email Address from a sentence. I want it to be returned with Group 1 only.

Regex:

\[mailto:(.+)\]|<(.+@.+\..+)>

Input String:

Hello my Email Address is <foo@hotmail.com> - Return foo@hotmail.com as Group1.
Hello my Email Address is [mailto: foo@hotmail.com] - Return foo@hotmail.com as Group2.

I want if any of the string matches then it should be returned in Group1.

Is there any way to do this?

slayer
  • 393
  • 1
  • 5
  • 19

1 Answers1

1

You may use regular expression:

(?=\S+@)([^<\s]+@.*(?=[>\]]))
  • (?=\S+@) Positive lookahead, assert that what follows is any non-whitespace characters followed by @.
  • ([^<\s]+@.*(?=[>\]])) Capture group. Capture any non-whitespace, non ^ character followed by @, and anything up to either a ] or > character.

You can test the regular expression here.

Paolo
  • 21,270
  • 6
  • 38
  • 69
  • Thanks. This expression works for only alphanumeric characters. But Email Address can consists of special characters too such as foo.123@hotmail.com, foo$123@hotmail.com. What about this usecase? – slayer Jul 26 '18 at 16:10
  • (?=.+@)(?:[:<])(.+@.+(?=[>\]])) - This seems working. – slayer Jul 26 '18 at 16:16