仅使用 Javascript 从 HTML 字符串中提取元标记

Posted

技术标签:

【中文标题】仅使用 Javascript 从 HTML 字符串中提取元标记【英文标题】:Extracting Meta Tags from HTML string using only Javascript 【发布时间】:2018-03-29 11:32:46 【问题描述】:

我收到了网页的 html 作为字符串,我正在尝试从字符串中包含的 HTML 标记中提取值,更具体地说是元标记。我找到了通过 jQuery 执行此操作的方法,但是我使用的平台不允许 JQuery 加上我提取的 html 在技术上是一个字符串,因此不需要 html。我希望提取每个元标记并将它们保存到一个数组中以供以后使用。任何正则表达式解决方案?

var rawHTML=input.rawHTML;
var HTMLlength=rawHTML.length;
var metas=rawHTML.split(">");
var testString="This is a <body>Test String for Regex</body>";
for(var i=0;i<metas.length;i++)
  
   metas[i]=metas[i]+">";
  
var twitterResults;
for(var i=0;i<metas.length;i++)
  
   metas[i]=strip_html_tags(metas[i]);
   //twitterResults = testString.match(<TAG\b[^>]*>(.*?)<);
  

最重要的是我正在尝试做一个正则表达式来将这些标签提取为

/<([A-Z][A-Z0-9]*)\b[^>]*>(.*?)</\1>

但似乎我无法跳出正则表达式并且不会接受分号作为分号并且只是给出错误

【问题讨论】:

请分享字符串示例,你试试看? 【参考方案1】:

您可以为此使用正则表达式,但我实际上会将字符串加载到 DOM documentFragment 中,然后通过查找 1 类型的节点和 nodeName === META 来解析片段以查找 meta 标签。

【讨论】:

以上是关于仅使用 Javascript 从 HTML 字符串中提取元标记的主要内容,如果未能解决你的问题,请参考以下文章

从表单发送电子邮件(仅 HTML、javascript)

仅保留 A-Z 0-9 并使用 javascript 从字符串中删除其他字符

解析 json 数据时 - 仅使用 javascript - 没有数据显示?

仅使用 HTML/JavaScript 创建购物车

仅使用 javascript 和 html 以具有跨浏览器功能的 html 音频录制

Javascript没有从输入字段中读取单个字符