JavaScript RegEx可获取字符串中一个或多个特定模式的出现

时间:2019-01-19 10:23:17

标签: javascript regex

给出以下HTML代码段:

<header>Student Directory</header>
<main>
<Student name="Pedro" age="23" />
    <div id="student1">
        <ul>
            <li>Maths</li>
            <li>English</li>
            <li>Swedish</li>
        </ul>
</div>
<Student name="Jane" age="15" />
</main>
<Footer />

在上面的html片段中,有三个表示组件的自定义标签。 组件具有一致的格式,因为它们以开括号开头,然后是大写字母 然后它们与/>紧密结合,因此,我尝试将所有组件作为字符串获取。正则表达式似乎 正确的方法,但是我对RegEx并不陌生,我已经阅读了有关实现的“贪婪”和“无贪婪”方法 这个。但是,作为新手,我可能会错过最佳实践或做事效率低下。本质上,在HTML示例中 正在寻找三个字符串:

字符串:

 <Student name="Pedro" age="23" /> <Student name="Jane" age="15" /> and  <Footer />

在HTML中,这仅表示三个组件及其数据。  任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

如果您真的想使用正则表达式执行此操作 您可以尝试使用类似<[^(\/>)]+\/>的东西:

var str = `<header>Student Directory</header>
<main>
<Student name="Pedro" age="23" />
    <div id="student1">
        <ul>
            <li>Maths</li>
            <li>English</li>
            <li>Swedish</li>
        </ul>
</div>
<Student name="Jane" age="15" />
</main>
<Footer />`

var matches = str.match(/<[^(\/>)]+\/>/g)

console.log(matches)