从.innerHTML

时间:2016-06-04 22:19:05

标签: javascript regex innerhtml

在序列化了.innerHTML div之后,我有了这样的代码(部分代码):

<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
  • \吨
  • \ n \ t 配对和重复(与上述两者类似)
  • 在双引号(&#34; )之前,
  • 反斜杠,如( \ )。那么,而不是 \&#34; 我希望只有&#34;

我尝试了正则表达式[\\][\\n][\\t][\\n\\t]+

,在此内:var cleared = document.querySelector('.qa-body-wrapper').innerHTML.replace(new RegExp('[\\n][\\t][\\n\\t]+'), '');

,但它并不匹配我上面列出的每一个字符。另外,我不知道如何将这些反斜杠(双引号之前)与相同的正则表达式匹配。

我的正则表达式对我想达到的目标有什么好处或完全错误吗?

[编辑]

这个问题可以关闭。我使用有关每个div的数据(包括它的内容)分开对象并通过JSON发送它 - 它非常干净并且数据较少(只有必要的东西)。

感谢您提出的regex提案。

2 个答案:

答案 0 :(得分:1)

这样的替代品可能有效:

str.replace(/\\t|\\n|\\(?=")/g, '');

以上内容会在双引号之前删除文字\n\t\,例如:

'hello\\nworld\\tJohn\\"Doe' -> 'helloworldJohn"Doe'

我对\"\\(?=")

使用了积极的预测

答案 1 :(得分:1)

使用:

new RegExp(/(\\)"|(\\n)|(\\t)|>[^<]*(\s)[^>]*</, 'g')

这将删除您列出的所有内容。我假设'不必要的空格'意味着html元素标签之外的空格。