Index: src/wp-admin/user-new.php
===================================================================
--- src/wp-admin/user-new.php	(revision 34914)
+++ src/wp-admin/user-new.php	(working copy)
@@ -34,7 +34,7 @@
 
 	$user_details = null;
 	$user_email = wp_unslash( $_REQUEST['email'] );
-	if ( false !== strpos( $user_email, '@' ) ) {
+	if ( is_email( $user_email ) ) {
 		$user_details = get_user_by( 'email', $user_email );
 	} else {
 		if ( is_super_admin() ) {
Index: src/wp-includes/class-wp-user-query.php
===================================================================
--- src/wp-includes/class-wp-user-query.php	(revision 34914)
+++ src/wp-includes/class-wp-user-query.php	(working copy)
@@ -373,8 +373,8 @@
 			if ( $qv['search_columns'] )
 				$search_columns = array_intersect( $qv['search_columns'], array( 'ID', 'user_login', 'user_email', 'user_url', 'user_nicename' ) );
 			if ( ! $search_columns ) {
-				if ( false !== strpos( $search, '@') )
-					$search_columns = array('user_email');
+				if ( false !== strpos( $search, '@' ) )
+					$search_columns = array( 'user_email', 'user_login' );
 				elseif ( is_numeric($search) )
 					$search_columns = array('user_login', 'ID');
 				elseif ( preg_match('|^https?://|', $search) && ! ( is_multisite() && wp_is_large_network( 'users' ) ) )
Index: src/wp-login.php
===================================================================
--- src/wp-login.php	(revision 34914)
+++ src/wp-login.php	(working copy)
@@ -282,7 +282,7 @@
 
 	if ( empty( $_POST['user_login'] ) ) {
 		$errors->add('empty_username', __('<strong>ERROR</strong>: Enter a username or email address.'));
-	} elseif ( strpos( $_POST['user_login'], '@' ) ) {
+	} elseif ( is_email( $_POST['user_login'] ) ) {
 		$user_data = get_user_by( 'email', trim( $_POST['user_login'] ) );
 		if ( empty( $user_data ) )
 			$errors->add('invalid_email', __('<strong>ERROR</strong>: There is no user registered with that email address.'));
