JavaScript - 以任何顺序匹配的正则表达式

JavaScript - regex that matches in any order

本文关键字:正则表达式 顺序 任何 JavaScript      更新时间:2023-09-26

我有以下返回关键字值的正则表达式:

 var keywords = result.match(/<meta name="keywords" content="(.*?)".*/i)[1];

我还需要能够支持"关键字"和"内容"属性顺序相反的情况,例如:

<meta content="...." name="keywords"

谁能建议我如何支持这两个订单?

他来的小马

通过触手可及的 DOM 访问,您没有理由不将 HTML 转储到临时文档中(或者,如果它是当前文档,请从那里开始处理它)。然后,根据浏览器版本,您可以querySelector("meta[name=keywords]")或迭代getElementsByTagName('meta')直到找到正确的浏览器,然后再使用getAttribute("content")来获取结果。

使用积极的前瞻首先检查name="keywords"是否存在,然后解析content

var keywords = result.match(/<meta(?=[^>]*'bname="keywords")[^>]*'bcontent="(.*?)".*/i)[1];