zepto源码中的正则表达式

参考:https://segmentfault.com/a/1190000012515207?from=timeline
对于Zepto源码分析,是每个前端修炼自己js技能的必经之路。
在读源码过程中,最难以理解的地方,是里面出现的各种晦涩的正则表达式。本文主要分析对象是[email protected]源码中的正则表达式。
这篇文章,主要总结了Zepto源码中使用到的一些正则表达式,并分析每个正则的使用场景。
以《JavaScript正则表达式迷你书》为参考,可以完善正则表达式的学习,并与本文形成照应。
关键是一句话:正则表达式是匹配模式,要么匹配字符,要么匹配位置。

1. fragmentRE = /^s<(w+|!)[^>]>/

源码位置:第10行
匹配目标是否为html节点,比如:", "

可视化形式为:

image.png

(\w+) 分组引用,使用了捕获分组的概念, Group #1(或者图中的capture 1)为第一组数据,所以作用在于后面使用 \1提取前面对应的数据,后面还可以使用 $1, $2捕获每组匹配的内容。
\s 表示空白符,包括:空格,水平制表符,垂直制表符,换行符,回车符,换页符。
* 表示任意次数出现。
/? 则表示 /出现或者不出现。
(?:|) 对应的是非捕获括号,指向要括号最原始的功能,但不会引用它。里面的 \1,是第一个分组 (Group #1)的内容,主要是为了验证这个标签是成对的,前后内容一致。后面 |则表示如果没有匹配到成对的内容,也可以什么内容都没有。比如匹配
这类标签。

//  测试代码段
singleTagRE.test("
") && RegExp.$1 // "hr" singleTagRE.test("") && RegExp.$1 // "script" singleTagRE.test("

你可能感兴趣的:(zepto源码中的正则表达式)