Index: src/wp-includes/formatting.php
===================================================================
--- src/wp-includes/formatting.php	(revision 30105)
+++ src/wp-includes/formatting.php	(working copy)
@@ -28,7 +28,7 @@
  * @return string The string replaced with html entities
  */
 function wptexturize($text, $reset = false) {
-	global $wp_cockneyreplace;
+	global $wp_cockneyreplace, $shortcode_tags;
 	static $static_characters, $static_replacements, $dynamic_characters, $dynamic_replacements,
 		$default_no_texturize_tags, $default_no_texturize_shortcodes, $run_texturize = true;
 
@@ -205,6 +205,10 @@
 
 	// Look for shortcodes and HTML elements.
 
+	$tagnames = array_keys( $shortcode_tags );
+	$tagregexp = join( '|', array_map( 'preg_quote', $tagnames ) );
+	$tagregexp = "(?:$tagregexp)(?![\\w-])"; // Excerpt of get_shortcode_regex().
+
 	$comment_regex =
 		  '!'           // Start of comment, after the <.
 		. '(?:'         // Unroll the loop: Consume everything until --> is found.
@@ -216,7 +220,7 @@
 	$shortcode_regex =
 		  '\['          // Find start of shortcode.
 		. '[\/\[]?'     // Shortcodes may begin with [/ or [[
-		. '[^\s\/\[\]]' // No whitespace before name.
+		. $tagregexp    // Only match registered shortcodes.
 		. '[^\[\]]*+'   // Shortcodes do not contain other shortcodes. Possessive critical.
 		. '\]'          // Find end of shortcode.
 		. '\]?';        // Shortcodes may end with ]]
Index: tests/phpunit/tests/formatting/WPTexturize.php
===================================================================
--- tests/phpunit/tests/formatting/WPTexturize.php	(revision 30105)
+++ tests/phpunit/tests/formatting/WPTexturize.php	(working copy)
@@ -1197,7 +1197,7 @@
 			),
 			array(
 				'[is it wise to <a title="allow user content ] here? hmm"> maybe </a> ]', // HTML corruption is a known bug.  See tickets #12690 and #29557.
-				'[is it wise to <a title="allow user content ] here? hmm&#8221;> maybe </a> ]',
+				'[is it wise to <a title="allow user content ] here? hmm"> maybe </a> ]',
 			),
 			array(
 				'[caption - is it wise to <a title="allow user content ] here? hmm"> maybe </a> ]',
@@ -1767,23 +1767,23 @@
 			),
 			array(
 				'[code ...]...[/code]', // code is not a registered shortcode.
-				'[code ...]...[/code]',
+				'[code &#8230;]&#8230;[/code]',
 			),
 			array(
 				'[hello ...]...[/hello]', // hello is not a registered shortcode.
-				'[hello ...]&#8230;[/hello]',
+				'[hello &#8230;]&#8230;[/hello]',
 			),
 			array(
 				'[...]...[/...]', // These are potentially usable shortcodes.
-				'[...]&#8230;[/...]',
+				'[&#8230;]&#8230;[/&#8230;]',
 			),
 			array(
 				'[gal>ery ...]',
-				'[gal>ery ...]',
+				'[gal>ery &#8230;]',
 			),
 			array(
 				'[randomthing param="test"]',
-				'[randomthing param="test"]',
+				'[randomthing param=&#8221;test&#8221;]',
 			),
 			array(
 				'[[audio]...[/audio]...', // These are potentially usable shortcodes.  Unfortunately, the meaning of [[audio] is ambiguous unless we run the entire shortcode regexp.
