lib/PublicInbox/Address.pm | 3 ++- t/address.t | 5 +++-- diff --git a/lib/PublicInbox/Address.pm b/lib/PublicInbox/Address.pm index f334adeac02d0b797d5d29c715a0ec49da049c48..548f417cae91e25ff5ddc6d1ee031d290129ef73 100644 --- a/lib/PublicInbox/Address.pm +++ b/lib/PublicInbox/Address.pm @@ -8,7 +8,8 @@ # very loose regexes, here. We don't need RFC-compliance, # just enough to make thing sanely displayable and pass to git sub emails { - ($_[0] =~ /([\w\.\+=\-]+\@[\w\.\-]+)>?\s*(?:\(.*?\))?(?:,\s*|\z)/g) + ($_[0] =~ /([\w\.\+=\?"\(\)\-!#\$%&'\*\/\^\`\|\{\}~]+\@[\w\.\-\(\)]+) + (?:\s[^>]*)?>?\s*(?:\(.*?\))?(?:,\s*|\z)/gx) } sub names { diff --git a/t/address.t b/t/address.t index e35e4f8b0a1eb2d45032fb4ed37cef48802aac4b..eced5c4632cdea1e86990ac7e594e61acf75c6ab 100644 --- a/t/address.t +++ b/t/address.t @@ -9,8 +9,9 @@ is_deeply([qw(e@example.com e@example.org)], [PublicInbox::Address::emails('User , e@example.org')], 'address extraction works as expected'); -is_deeply([PublicInbox::Address::emails('"ex@example.com" ')], - [qw(ex@example.com)]); +is_deeply(['user@example.com'], + [PublicInbox::Address::emails('')], + 'comment after domain accepted before >'); my @names = PublicInbox::Address::names( 'User , e@e, "John A. Doe" , ');