diff --git a/core/modules/filter/filter.module b/core/modules/filter/filter.module
index e3095346dd..0f3a0bffe0 100644
--- a/core/modules/filter/filter.module
+++ b/core/modules/filter/filter.module
@@ -515,7 +515,11 @@ function _filter_url($text, $filter) {
   $tasks['_filter_url_parse_full_links'] = $pattern;
 
   // Match email addresses.
-  $url_pattern = "[\p{L}\p{M}\p{N}._+-]{1,254}@(?:$domain)";
+  // Mail domain pattern differs from the general domain pattern by requiring
+  // a subdomain match. This allows patterns like foo@bar in text without
+  // being converted to a mailto -link.
+  $email_domain = '(?:[A-Za-z0-9._+-]+\.)+[A-Za-z]{2,64}\b';
+  $url_pattern = "[A-Za-z0-9._-]{1,254}@(?:$email_domain)";
   $pattern = "`($url_pattern)`u";
   $tasks['_filter_url_parse_email_links'] = $pattern;
 
