【发布时间】:2016-06-04 22:19:05
【问题描述】:
在序列化一些div 中的.innerHTML 之后,我得到了这样的代码(其中的一部分):
<div class=\"qa-main-wrapper\">\n\t\t\t\t\t\n\t\t\t\t\t<div class=\"qa-main\">\n\t\t\t\t\t\t<h1>\n\t\t\t\t\t\t\t<a href=\"./feed/activity.rss\" original-title=\"Ostatnia aktywność\" title=\"\"><i class=\"icon-rss qam-title-rss\"></i></a>\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tOstatnia aktywność\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t</h1>\n\t\t\t\t\t\t<div class=\"qa-widgets-main qa-widgets-main-high\">\n\t\t\t\t\t\t\t<div class=\"qa-widget-main qa-widget-main-high\">\n<div style=\" text-align:center; background-color: white; width:100%; padding-top:6px; margin-bottom:5px;\">\n\t<script type=\"text/javascript\">\n\tgoogle_ad_client = 'pub-4644487134112796';\n\tgoogle_ad_width = 728;\n\tgoogle_ad_height = 90;\n\tgoogle_ad_format = '728x90_as';\n\tgoogle_ad_type = \"text_image\";\n\tgoogle_ad_channel = \"\";\n\t</script>\n\t<script type=\"text/javascript\" src=\"http://pagead2.googlesyndication.com/pagead/show_ads.js\"></script>\n</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\n\t\t\t\t\t\t<div class=\"qa-part-q-list\">\n\t\t\t\t\t\t\t<form method=\"post\" action=\"./activity\">\n\t\t\t\t\t\t\t\t<div class=\"qa-q-list\">\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t<div class=\"qa-q-list-item\" id=\"q147574\">\n\t\t\t\t\t\t\t\t\t\t<div class=\"qa-q-item-stats\">\n\t\t\t\t\t\t\t\t\t\t\t<div class=\"qa-voting qa-voting-net\" id=\"voting_147574\">\n\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"qa-vote-buttons qa-vote-buttons-net\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<input name=\"vote_147574_1_q147574\" onclick=\"return qa_vote_click(this);\" type=\"submit\" value=\"+\" class=\"qa-vote-first-button qa-vote-up-button\" original-title=\"Kliknij, aby oddać głos w górę\" title=\"\"> \n\t\t\t\t\t\t\t\t\t\t\t\t\t<input name=\"vote_147574_-1_q147574\" onclick=\"return qa_vote_click(this);\" type=\"submit\" value=\"–\" class=\"qa-vote-second-button qa-vote-down-button\" original-title=\"Kliknij, aby oddać głos w dół\" title=\"\"> \n\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t
我要全部删除:
- 不必要的空格
- \n
- \t
- \n\t 对和重复(类似于上面两个)
- 反斜杠,如 (\),在双引号 (") 之前。那么,我想要的不是 \" "
我试过这样的regex:[\\][\\n][\\t][\\n\\t]+
,在此:var cleared = document.querySelector('.qa-body-wrapper').innerHTML.replace(new RegExp('[\\n][\\t][\\n\\t]+'), '');
,但它并不匹配我上面列出的所有字符。另外,我不知道如何将那些反斜杠(在双引号之前)与相同的正则表达式匹配。
我的正则表达式对我想要实现的目标有好处还是完全错误?
[编辑]
这个问题可以结束了。我用每个 div 的数据(包括它的内容)分离了对象,并通过 JSON 发送它——它非常干净,数据更少(只有必要的东西)。
感谢您的regex 提案。
【问题讨论】:
-
您的代码中出现这种混乱的原因是什么?
-
你如何“序列化”HTML,如果所有的换行符和制表符都是字符串的一部分,你似乎做错了什么。
-
这是我想出的:regex101.com/r/lF6vA3/1
-
所有空格的正则表达式 [\s]+/g,谢谢
-
为什么是
innerHTML?请改用textContent || innerText- 空格将为您折叠...
标签: javascript regex innerhtml