--- a/sites/all/modules/tinymce/tinymce/jscripts/tiny_mce/plugins/drupalimage/editor_plugin_src.js
+++ b/sites/all/modules/tinymce/tinymce/jscripts/tiny_mce/plugins/drupalimage/editor_plugin_src.js
@@ -204,15 +204,21 @@ var TinyMCE_DrupalImagePlugin = {
 	// this function use the ] symbol to find the end of the drupalimage filter code
 	_parsePipeAttributes : function(attribute_string) {
 		var attributes = new Array();
-		var keyvalue_arr = new Array();
-		// if it weren't for the escaping, the regExp string would look like this:
-		// var regExp = new RegExp('([a-zA-Z]*)=([^\|]*)', 'g');
-		var regExp = new RegExp('([a-zA-Z]*)=([^|](?:\\.|[^\\|]*)*)*', 'g');
-		var matches = attribute_string.match(regExp);
-		for (var i = 0; i < matches.length; i++ ) {
-			keyvalue_arr = matches[i].split('=');
-			attributes[keyvalue_arr[0]] = keyvalue_arr[1];
+
+		// Split this at the pipes:
+		var pipegroup = attribute_string.split('|');
+		for (var i=0; i<pipegroup.length; i++) {
+			var equalsAt = pipegroup[i].indexOf('=');
+			if (equalsAt == -1) {
+				// There was a stray pipe somewhere in the attribute string.
+				// There's not a good way to deal with this.
+				continue;
+			}
+			var key   = pipegroup[i].substr(0, equalsAt);
+			var value = pipegroup[i].substr(equalsAt+1);
+			attributes[key] = value;
 		}
+
 		return attributes;
 	},
 	
