Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Javascript RegEx replacing "

I'm trying to patch the Drupal Panels module to fix this nasty issue, which makes the AJAX errorhandler completely unreadable. The error handler has this:

// Replace all &lt; and &gt; by < and >
  error_text = error_text.replace("/&(lt|gt);/g", function (m, p) { 
    return (p == "lt")? "<" : ">";
  });

I've tried two approaches:

Adding

// Now replace all &quot with ' for readability, for goodness sakes, per
  // http://drupal.org/node/1124042
  error_text = error_text.replace(/&quot;/g, "'");

Modifying

// Replace all &lt; and &gt; by < and >
  error_text = error_text.replace("/&(lt|gt|quot);/g", function (m, p) { 
    return (p == "lt")? "<" : (p == "gt") ? ">" : "'";
  });

Yet neither has worked. Little help?

EDIT: When printed out to console (in FF4 or Chrome) The HTML entities are not shown. The resulting alert(""), however, looks like so:

An error occurred at /home/panels/ajax/editor/select-content/panel_context%3Apage-faculty_page%3Apage_faculty_page_panel_context/center.

Error Description: [ { &quot;command&quot;: &quot;settings&quot;, &quot;argument&quot;: {    &quot;basePath&quot;: &quot;/home/&quot;, &quot;admin_menu&quot;: { &quot;margin_top&quot;: 1 }, &quot;asu_webauth&quot;: { &quot;callapp&quot;:
>&quot;home&quot;, quot;onLogoutURL&quot;: &quot;http://physics-dev.asu.edu&quot; } } }, { &quot;command&quot;: &quot;css_files&quot;, &quot;argument&quot;: [ { &quot;file&quot;: &quot;/home/modules/node/node.css?E&quot;, &quot;media&quot;: &quot;all&quot; }, { &quot;file&quot;: &quot;/home/modules/system/defaults.css?E&quot;, &quot;media&quot;: &quot;all&quot; }, { &quot;file&quot;: &quot;/home/modules/system/system.css?E&quot;, &quot;media&quot;: &quot;all&quot; }, { &quot;file&quot;: &quot;/home/modules/system/system-menus.css?E&quot;, &quot;media&quot;: &quot;all&quot; }, { &quot;file&quot;: &quot;/home/modules/user/user.css?E&quot;, &quot;media&quot;: &quot;all&quot; }, { &quot;file&quot;: &quot;/home/sites/all/modules/admin_menu/admin_menu.css?E&quot;, &quot;media&quot;: &quot;all&quot; }, { &quot;file&quot;: &quot;/home/sites/all/modules/cck/theme/content-module.css?E&quot;, &quot;media&quot;: &quot;all&quot; }, { &quot;file&quot;: &quot;/home/sites/all/modules/ctools/css/ctools.css?E&quot;, &quot;media&quot;: &quot;all&quot; }, { &quot;file&quot;: &quot;/home/sites/all/modules/date/date.css?E&quot;, &quot;media&quot;: &quot;all&quot; }, { &quot;file&quot;: &quot;/home/sites/all/modules/filefield/filefield.css?E&quot;, &quot;media&quot;: &quot;all&quot; }, { &quot;file&quot;: &quot;/home/sites/all/modules/office_hours/office_hours.css?E&quot;, &quot;media&quot;: &quot;all&quot; }, { &quot;file&quot;: &quot;/home/sites/all/modules/og/theme/og.css?E&quot;, &quot;media&quot;: &quot;all&quot; }, { &quot;file&quot;: &quot;/home/sites/all/modules/panels/css/panels.css?E&quot;, &quot;media&quot;: &quot;all&quot; }, { &quot;file&quot;: &quot;/home/sites/all/modules/views_slideshow/contrib/views_slideshow_singleframe/views_slideshow.css?E&quot;, &quot;media&quot;: &quot;all&quot; }, { &quot;file&quot;: &quot;/home/sites/all/modules/views_slideshow/contrib/views_slideshow_thumbnailhover/views_slideshow.css?E&quot;, &quot;media&quot;: &quot;all&quot; }, { &quot;file&quot;: &quot;/home/misc/farbtastic/farbtastic.css?E&quot;, &quot;media&quot;: &quot;all&quot; }, { &quot;file&quot;: &quot;/home/sites/all/modules/calendar/calendar.css?E&quot;, &quot;media&quot;: &quot;all&quot; }, { &quot;file&quot;: &quot;/home/sites/all/modules/cck/modules/fieldgroup/fieldgroup.css?E&quot;, &quot;media&quot;: &quot;all&quot; }, { &quot;file&quot;: &quot;/home/sites/all/modules/views/css/views.css?E&quot;, &quot;media&quot;: &quot;all&quot; } ] }, { &quot;command&quot;: &quot;scripts&quot;, &quot;argument&quot;: [ &quot;/home/misc/jquery.js&quot;, &quot;/home/misc/drupal.js&quot;, &quot;/home/sites/all/modules/admin_menu/admin_menu.js&quot;, &quot;/home/sites/all/modules/og/og.js&quot;, &quot;/home/sites/all/modules/panels/js/panels.js&quot;, &quot;/home/sites/all/modules/views_slideshow/js/jquery.cycle.all.min.js&quot;, &quot;/home/sites/all/modules/views_slideshow/contrib/views_slideshow_singleframe/views_slideshow.js&quot;, &quot;/home/sites/all/modules/views_slideshow/contrib/views_slideshow_thumbnailhover/views_slideshow.js&quot;, &quot;/home/sites/all/modules/asu_webauth/asu_webauth.js&quot; ] }, { &quot;command&quot;: &quot;modal_display&quot;, &quot;title&quot;: &quot;Add content to Center&quot;, &quot;output&quot;: &quot;\x3cdiv class=\&quot;panels-add-content-modal\&quot;\x3e\x3cdiv class=\&quot;panels-section-column panels-section-column-categories\&quot;\x3e\x3cdiv class=\&quot;inside\&quot;\x3e\x3cdiv class=\&quot;panels-categories-box\&quot;\x3e\x3ca href=\&quot;/home/panels/ajax/editor/select-content/panel_context%3Apage-faculty_page%3Apage_faculty_page_panel_context/center/activity\&quot; class=\&quot;ctools-use-ajax panels-modal-add-category\&quot; title=\&quot;\&quot;\x3eActivity\x3c/a\x3e\x3ca href=\&quot;/home/panels/ajax/editor/select-content/panel_context%3Apage-faculty_page%3Apage_faculty_page_panel_context/center/menus\&quot; class=\&quot;ctools-use-ajax panels-modal-add-category\&quot; title=\&quot;\&quot;\x3eMenus\x3c/a\x3e\x3ca href=\&quot;/home/panels/ajax/editor/select-content/panel_context%3Apage-faculty_page%3Apage_faculty_page_panel_context/center/miscellaneous\&quot; class=\&quot;ctools-use-ajax panels-modal-add-category\&quot; title=\&quot;\&quot;\x3eMiscellaneous\x3c/a\x3e\x3ca href=\&quot;/home/panels/ajax/editor/select-content/panel_context%3Apage-faculty_page%3Apage_faculty_page_panel_context/center/page-elements\&quot; class=\&quot;ctools-use-ajax panels-modal-add-category\&quot; title=\&quot;\&quot;\x3ePage elements\x3c/a\x3e\x3ca href=\&quot;/home/panels/ajax/editor/select-content/panel_context%3Apage-faculty_page%3Apage_faculty_page_panel_context/center/view-panes\&quot; class=\&quot;ctools-use-ajax panels-modal-add-category\&quot; title=\&quot;\&quot;\x3eView panes\x3c/a\x3e\x3ca href=\&quot;/home/panels/ajax/editor/select-content/panel_context%3Apage-faculty_page%3Apage_faculty_page_panel_context/center/views\&quot; class=\&quot;ctools-use-ajax panels-modal-add-category\&quot; title=\&quot;\&quot;\x3eViews\x3c/a\x3e\x3ca href=\&quot;/home/panels/ajax/editor/select-content/panel_context%3Apage-faculty_page%3Apage_faculty_page_panel_context/center/widgets\&quot; class=\&quot;ctools-use-ajax panels-modal-add-category\&quot; title=\&quot;\&quot;\x3eWidgets\x3c/a\x3e\x3c/div\x3e\x3cdiv class=\&quot;content-type-button clear-block\&quot;\x3e\x3ca href=\&quot;/home/panels/ajax/editor/add-pane/panel_context%3Apage-faculty_page%3Apage_faculty_page_panel_context/center/node/node\&quot; class=\&quot;ctools-use-ajax panels-modal-add-config\&quot; title=\&quot;Add a node from your site as content.\&quot;\x3e\x3cimg src=\&quot;/home/sites/all/modules/ctools/plugins/content_types/node/icon_node.png\&quot; alt=\&quot;\&quot; title=\&quot;\&quot; width=\&quot;16\&quot; height=\&quot;16\&quot; /\x3e\x3c/a\x3e\x3cdiv\x3e\x3ca href=\&quot;/home/panels/ajax/editor/add-pane/panel_context%3Apage-faculty_page%3Apage_faculty_page_panel_context/center/node/node\&quot; class=\&quot;ctools-use-ajax panels-modal-add-config\&quot; title=\&quot;Add a node from your site as content.\&quot;\x3eExisting node\x3c/a\x3e\x3c/div\x3e\x3c/div\x3e\x3cdiv class=\&quot;content-type-button clear-block\&quot;\x3e\x3ca href=\&quot;/home/panels/ajax/editor/add-pane/panel_context%3Apage-faculty_page%3Apage_faculty_page_panel_context/center/custom/custom\&quot; class=\&quot;ctools-use-ajax panels-modal-add-config\&quot; title=\&quot;Create a completely custom piece of HTML content.\&quot;\x3e\x3cimg src=\&quot;/home/sites/all/modules/ctools/images/no-icon.png\&quot; alt=\&quot;\&quot; title=\&quot;\&quot; width=\&quot;16\&quot; height=\&quot;16\&quot; /\x3e\x3c/a\x3e\x3cdiv\x3e\x3ca href=\&quot;/home/panels/ajax/editor/add-pane/panel_context%3Apage-faculty_page%3Apage_faculty_page_panel_context/center/custom/custom\&quot; class=\&quot;ctools-use-ajax panels-modal-add-config\&quot; title=\&quot;Create a completely custom piece of HTML content.\&quot;\x3eNew custom content\x3c/a\x3e\x3c/div\x3e\x3c/div\x3e\x3c/div\x3e\x3c/div\x3e\x3cdiv class=\&quot;panels-categories-description\&quot;\x3eContent options are divided by category. Please select a category from the left to proceed.\x3c/div\x3e\x3c/div\x3e&quot; } ]
like image 963
Visionary Software Solutions Avatar asked May 10 '11 23:05

Visionary Software Solutions


People also ask

Can I use regex in replace?

The Regex. Replace(String, String, MatchEvaluator, RegexOptions) method is useful for replacing a regular expression match if any of the following conditions is true: If the replacement string cannot readily be specified by a regular expression replacement pattern.

What is $1 in regex replace?

For example, the replacement pattern $1 indicates that the matched substring is to be replaced by the first captured group. For more information about numbered capturing groups, see Grouping Constructs.

What is replace () in JavaScript?

The replace() method returns a new string with one, some, or all matches of a pattern replaced by a replacement . The pattern can be a string or a RegExp , and the replacement can be a string or a function called for each match. If pattern is a string, only the first occurrence will be replaced.

How does regex replace work?

The REGEXREPLACE( ) function uses a regular expression to find matching patterns in data, and replaces any matching values with a new string. standardizes spacing in character data by replacing one or more spaces between text characters with a single space.


2 Answers

str.replace(/&(l|g|quo)t;/g, function(a,b){
    return {
        l   : '<',
        g   : '>',
        quo : '"'
    }[b];
})
like image 115
Nobody Avatar answered Nov 08 '22 19:11

Nobody


remove the quotes around the regex

  error_text = error_text.replace(/&(lt|gt|quot);/g, function (m, p) { 
    return (p == "lt")? "<" : (p == "gt") ? ">" : "'";
  });

demo http://jsfiddle.net/gaby/mfmkc/

like image 35
Gabriele Petrioli Avatar answered Nov 08 '22 19:11

Gabriele Petrioli