Index: src/wp-includes/formatting.php
===================================================================
--- src/wp-includes/formatting.php	(revision 37037)
+++ src/wp-includes/formatting.php	(working copy)
@@ -216,7 +216,7 @@
 
 	// Look for shortcodes and HTML elements.
 
-	preg_match_all( '@\[/?([^<>&/\[\]\x00-\x20=]++)@', $text, $matches );
+	preg_match_all( '@\[/?([^' . WP_SHORTCODE_NAME_TERMINATORS  . ']++)@u', $text, $matches );
 	$tagnames = array_intersect( array_keys( $shortcode_tags ), $matches[1] );
 	$found_shortcodes = ! empty( $tagnames );
 	$shortcode_regex = $found_shortcodes ? _get_wptexturize_shortcode_regex( $tagnames ) : '';
Index: src/wp-includes/shortcodes.php
===================================================================
--- src/wp-includes/shortcodes.php	(revision 37037)
+++ src/wp-includes/shortcodes.php	(working copy)
@@ -41,6 +41,8 @@
  */
 $shortcode_tags = array();
 
+define( 'WP_SHORTCODE_NAME_TERMINATORS', '<>&\/\[\]\x00-\x20=\x{00a0}' );
+
 /**
  * Add hook for shortcode tag.
  *
@@ -95,7 +97,7 @@
 		return;
 	}
 
-	if ( 0 !== preg_match( '@[<>&/\[\]\x00-\x20=]@', $tag ) ) {
+	if ( 0 !== preg_match( '@[' . WP_SHORTCODE_NAME_TERMINATORS . ']@u', $tag ) ) {
 		/* translators: 1: shortcode name, 2: space separated list of reserved characters */
 		$message = sprintf( __( 'Invalid shortcode name: %1$s. Do not use spaces or reserved characters: %2$s' ), $tag, '& / < > [ ] =' );
 		_doing_it_wrong( __FUNCTION__, $message, '4.4.0' );
@@ -210,7 +212,7 @@
 		return $content;
 
 	// Find all registered tag names in $content.
-	preg_match_all( '@\[([^<>&/\[\]\x00-\x20=]++)@', $content, $matches );
+	preg_match_all( '@\[([^' . WP_SHORTCODE_NAME_TERMINATORS . ']++)@u', $content, $matches );
 	$tagnames = array_intersect( array_keys( $shortcode_tags ), $matches[1] );
 
 	if ( empty( $tagnames ) ) {
@@ -578,7 +580,7 @@
 		return $content;
 
 	// Find all registered tag names in $content.
-	preg_match_all( '@\[([^<>&/\[\]\x00-\x20=]++)@', $content, $matches );
+	preg_match_all( '@\[([^' . WP_SHORTCODE_NAME_TERMINATORS . ']++)@u', $content, $matches );
 	$tagnames = array_intersect( array_keys( $shortcode_tags ), $matches[1] );
 
 	if ( empty( $tagnames ) ) {
