Javascript RegEx 替换 "
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/5957546/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Javascript RegEx replacing "
提问by Visionary Software Solutions
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:
我正在尝试修补 Drupal Panels 模块以解决这个令人讨厌的问题,这使得 AJAX 错误处理程序完全不可读。错误处理程序有这个:
// Replace all < and > 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 " with ' for readability, for goodness sakes, per
// http://drupal.org/node/1124042
error_text = error_text.replace(/"/g, "'");
Modifying
修改
// Replace all < and > 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:
编辑:当打印到控制台(在 FF4 或 Chrome 中)时,不显示 HTML 实体。然而,结果 alert("") 看起来像这样:
An error occurred at /home/panels/ajax/editor/select-content/panel_context%3Apage-faculty_page%3Apage_faculty_page_panel_context/center.
Error Description: [ { "command": "settings", "argument": { "basePath": "/home/", "admin_menu": { "margin_top": 1 }, "asu_webauth": { "callapp":
>"home", quot;onLogoutURL": "http://physics-dev.asu.edu" } } }, { "command": "css_files", "argument": [ { "file": "/home/modules/node/node.css?E", "media": "all" }, { "file": "/home/modules/system/defaults.css?E", "media": "all" }, { "file": "/home/modules/system/system.css?E", "media": "all" }, { "file": "/home/modules/system/system-menus.css?E", "media": "all" }, { "file": "/home/modules/user/user.css?E", "media": "all" }, { "file": "/home/sites/all/modules/admin_menu/admin_menu.css?E", "media": "all" }, { "file": "/home/sites/all/modules/cck/theme/content-module.css?E", "media": "all" }, { "file": "/home/sites/all/modules/ctools/css/ctools.css?E", "media": "all" }, { "file": "/home/sites/all/modules/date/date.css?E", "media": "all" }, { "file": "/home/sites/all/modules/filefield/filefield.css?E", "media": "all" }, { "file": "/home/sites/all/modules/office_hours/office_hours.css?E", "media": "all" }, { "file": "/home/sites/all/modules/og/theme/og.css?E", "media": "all" }, { "file": "/home/sites/all/modules/panels/css/panels.css?E", "media": "all" }, { "file": "/home/sites/all/modules/views_slideshow/contrib/views_slideshow_singleframe/views_slideshow.css?E", "media": "all" }, { "file": "/home/sites/all/modules/views_slideshow/contrib/views_slideshow_thumbnailhover/views_slideshow.css?E", "media": "all" }, { "file": "/home/misc/farbtastic/farbtastic.css?E", "media": "all" }, { "file": "/home/sites/all/modules/calendar/calendar.css?E", "media": "all" }, { "file": "/home/sites/all/modules/cck/modules/fieldgroup/fieldgroup.css?E", "media": "all" }, { "file": "/home/sites/all/modules/views/css/views.css?E", "media": "all" } ] }, { "command": "scripts", "argument": [ "/home/misc/jquery.js", "/home/misc/drupal.js", "/home/sites/all/modules/admin_menu/admin_menu.js", "/home/sites/all/modules/og/og.js", "/home/sites/all/modules/panels/js/panels.js", "/home/sites/all/modules/views_slideshow/js/jquery.cycle.all.min.js", "/home/sites/all/modules/views_slideshow/contrib/views_slideshow_singleframe/views_slideshow.js", "/home/sites/all/modules/views_slideshow/contrib/views_slideshow_thumbnailhover/views_slideshow.js", "/home/sites/all/modules/asu_webauth/asu_webauth.js" ] }, { "command": "modal_display", "title": "Add content to Center", "output": "\x3cdiv class=\"panels-add-content-modal\"\x3e\x3cdiv class=\"panels-section-column panels-section-column-categories\"\x3e\x3cdiv class=\"inside\"\x3e\x3cdiv class=\"panels-categories-box\"\x3e\x3ca href=\"/home/panels/ajax/editor/select-content/panel_context%3Apage-faculty_page%3Apage_faculty_page_panel_context/center/activity\" class=\"ctools-use-ajax panels-modal-add-category\" title=\"\"\x3eActivity\x3c/a\x3e\x3ca href=\"/home/panels/ajax/editor/select-content/panel_context%3Apage-faculty_page%3Apage_faculty_page_panel_context/center/menus\" class=\"ctools-use-ajax panels-modal-add-category\" title=\"\"\x3eMenus\x3c/a\x3e\x3ca href=\"/home/panels/ajax/editor/select-content/panel_context%3Apage-faculty_page%3Apage_faculty_page_panel_context/center/miscellaneous\" class=\"ctools-use-ajax panels-modal-add-category\" title=\"\"\x3eMiscellaneous\x3c/a\x3e\x3ca href=\"/home/panels/ajax/editor/select-content/panel_context%3Apage-faculty_page%3Apage_faculty_page_panel_context/center/page-elements\" class=\"ctools-use-ajax panels-modal-add-category\" title=\"\"\x3ePage elements\x3c/a\x3e\x3ca href=\"/home/panels/ajax/editor/select-content/panel_context%3Apage-faculty_page%3Apage_faculty_page_panel_context/center/view-panes\" class=\"ctools-use-ajax panels-modal-add-category\" title=\"\"\x3eView panes\x3c/a\x3e\x3ca href=\"/home/panels/ajax/editor/select-content/panel_context%3Apage-faculty_page%3Apage_faculty_page_panel_context/center/views\" class=\"ctools-use-ajax panels-modal-add-category\" title=\"\"\x3eViews\x3c/a\x3e\x3ca href=\"/home/panels/ajax/editor/select-content/panel_context%3Apage-faculty_page%3Apage_faculty_page_panel_context/center/widgets\" class=\"ctools-use-ajax panels-modal-add-category\" title=\"\"\x3eWidgets\x3c/a\x3e\x3c/div\x3e\x3cdiv class=\"content-type-button clear-block\"\x3e\x3ca href=\"/home/panels/ajax/editor/add-pane/panel_context%3Apage-faculty_page%3Apage_faculty_page_panel_context/center/node/node\" class=\"ctools-use-ajax panels-modal-add-config\" title=\"Add a node from your site as content.\"\x3e\x3cimg src=\"/home/sites/all/modules/ctools/plugins/content_types/node/icon_node.png\" alt=\"\" title=\"\" width=\"16\" height=\"16\" /\x3e\x3c/a\x3e\x3cdiv\x3e\x3ca href=\"/home/panels/ajax/editor/add-pane/panel_context%3Apage-faculty_page%3Apage_faculty_page_panel_context/center/node/node\" class=\"ctools-use-ajax panels-modal-add-config\" title=\"Add a node from your site as content.\"\x3eExisting node\x3c/a\x3e\x3c/div\x3e\x3c/div\x3e\x3cdiv class=\"content-type-button clear-block\"\x3e\x3ca href=\"/home/panels/ajax/editor/add-pane/panel_context%3Apage-faculty_page%3Apage_faculty_page_panel_context/center/custom/custom\" class=\"ctools-use-ajax panels-modal-add-config\" title=\"Create a completely custom piece of HTML content.\"\x3e\x3cimg src=\"/home/sites/all/modules/ctools/images/no-icon.png\" alt=\"\" title=\"\" width=\"16\" height=\"16\" /\x3e\x3c/a\x3e\x3cdiv\x3e\x3ca href=\"/home/panels/ajax/editor/add-pane/panel_context%3Apage-faculty_page%3Apage_faculty_page_panel_context/center/custom/custom\" class=\"ctools-use-ajax panels-modal-add-config\" title=\"Create a completely custom piece of HTML content.\"\x3eNew custom content\x3c/a\x3e\x3c/div\x3e\x3c/div\x3e\x3c/div\x3e\x3c/div\x3e\x3cdiv class=\"panels-categories-description\"\x3eContent options are divided by category. Please select a category from the left to proceed.\x3c/div\x3e\x3c/div\x3e" } ]
回答by Mark Kahn
str.replace(/&(l|g|quo)t;/g, function(a,b){
return {
l : '<',
g : '>',
quo : '"'
}[b];
})
回答by Gabriele Petrioli
remove the quotes around the regex
删除正则表达式周围的引号
error_text = error_text.replace(/&(lt|gt|quot);/g, function (m, p) {
return (p == "lt")? "<" : (p == "gt") ? ">" : "'";
});
回答by Matty F
This should work:
这应该有效:
var str = '<span>"error"</span>';
str.replace(/&(lt|gt|quot);/g, function(m, t) {
switch (t) {
case 'lt':
return '<';
case 'gt':
return '>';
case 'quot':
return '\'';
}
});
It returns "<span>'error'</span>"
它返回 "<span>'error'</span>"
If that's not working, then perhaps your original string contains &lt;
instead of <
, etc...
如果这不起作用,那么您的原始字符串可能包含&lt;
而不是<
等...