首页 > 解决方案 > 为什么这个正则表达式不为每个单独的匹配项

  • ?
  • 问题描述

    我正在尝试使用以下正则表达式捕获打开和关闭 li 标签之间可能发生的任何事情:

    /<li[\w\s\!\@\#\$\%\^\&\*\-\_\+\=\~\`\.\,\:\;\"\/\–\?\{\}\[\]\(\)\<\>\ \|\'\\]+<\/li>/g
    

    我在正则表达式 101 上创建了正则表达式。

    我不明白为什么它不抓取单个 li 元素而不是第一个和最后一个 li 之间的所有文本。我对正则表达式的结构不是很熟悉,所以我不确定我需要研究什么来捕获所有可能显示并仍然终止结束</li>标记上的单个匹配的属性、特殊字符等。

    更新: 新的 Regex101 演示更好地反映了我试图捕获的示例(即使我原来的正则表达式也失败了其中一些)

    标签: javascriptregex

    解决方案


    我会使用:

    <li[^>]*>(.*?)<\/li>
    

    在哪里:

    • [^>]*表示任何不是>

    演示


    推荐阅读