我认为这个正则表达式应该匹配一个html开始标记.
var results = html.match(/<(\/?)(\w+)([^>]*?)>/);
我看它应该首先抓住它<,但后来我很困惑这次捕获(\/?)完成了什么.我是否正确地推断([^>]*?)>除了>> = 0次之外每个字符的搜索?如果是这样,为什么(\w+)捕获必要?不属于它的范围[^>]*?
逐个令牌地获取它:
/开始正则表达式文字<匹配文字<(\/?)匹配 0 或 1 ( ?) 文字/,由转义\(\w+)匹配一个或多个“单词字符”([^>]*?)惰性* 匹配零个或多个 ( *?) 任何非>>匹配文字>/结束正则表达式文字懒洋洋地* - 添加“?” 在重复量词之后将使其延迟执行,这意味着正则表达式将匹配前面的标记最少次数。请参阅文档。
因此,本质上,此正则表达式将匹配“<”,可能后跟“/”,后跟任意数量的字母、数字或下划线,后跟任何不是“>”的内容,最后后跟“>” 。
话虽如此,令牌(\w+)并不是多余的,因为它确保<和之间至少有一个单词字符>。
请注意,尝试使用正则表达式解析 HTML 通常不是一个好主意。