首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >匹配和捕获标题的正则表达式

匹配和捕获标题的正则表达式
EN

Stack Overflow用户
提问于 2015-03-01 13:48:00
回答 2查看 534关注 0票数 0

我得到了这个Regex /<h([2-4])>(.+)<\/h[2-4]>/g,它匹配所有的h2、h3、h4,并捕获级别和标题文本。

它是否足够好,或者你认为在速度和健壮性方面有改进的余地?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-03-01 13:50:24

不要在HTML上使用regex。您可以使用Element.querySelectorAll。将Element替换为对您喜欢从中选择标题的DOM元素的引用。

代码语言:javascript
运行
复制
var heading = document.querySelectorAll("h2, h3, h4");

QuerySelectorAll (和他的兄弟querySelector)使用CSS选择器从DOM中选择元素。您可以使用逗号提供多个选择器。这将选择所有h2-4元素。您可以用以下代码循环它们:

代码语言:javascript
运行
复制
Array.prototype.map.call(heading , function(element){
    //do something with the element here.
    console.log(element.textContent); //EXAMPLE, display the text in the element.
});

因为querySelectorAll返回一个节点列表(这是一个数组对象),所以我们可以将它传递给Array.map (虽然不是直接的)。我们使用Array.prototype.map.call将节点列表作为数组传递给映射函数。Map循环遍历节点列表中的每个元素。

票数 2
EN

Stack Overflow用户

发布于 2015-03-01 13:49:24

让你的判断力做一场非贪婪的比赛。同时也让regex做反向引用。

代码语言:javascript
运行
复制
/<(h[2-4])>([^<>]+)<\/\1>/g

代码语言:javascript
运行
复制
/<(h[2-4])>((?:(?!<h\d+\b).)+?)<\/\1>/g

演示

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28794249

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档