Sizzle.selectors.match/leftMatch

对象Sizzle.selectors.match/leftMatch中存放了表达式类型和正则的映射,正则用于确定块表达式的类型,并解析其中的参数。

相关代码如下:

var Expr = Sizzle.selectors = {
    match : {
        ID: /#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,
        CLASS: /\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,
        NAME: /\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*/,
        ATTR: /\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/,
        TAG: /^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+/,
        CHILD: /:(only|nth|last|first)-child(?:\(\s*(even|odd|?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*\d+)?))\s*\))?/,
        POS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,
        PSEUDO: /:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/
    }
}

var origPOS = Expr.match.POS,
    fescape = function(all, num) {
        return "\\" + (num - 0 + 1);
    };

for ( var type in Expr.match ) {
    Expr.match[ type ] = new RegExp( Expr.match[ type ].source + (/(?![^\[]*\])(?![^\(]*\))/.source) );
    Expr.leftMatch[ type ] = new RegExp ( /(^(?:.|\r|\n)*?)/.source + Expr.match[ type ].source.replace(/\\(\d+)/g, fescape) );
}

我不保证以上代码的正确性。良心起见,解释上面代码的一些难点

  1. \3,\2 应用前面匹配到的分组
  2. (?:) 表示匹配,但不计入分组
  3. (?=) 前瞻,look forward, 环视,零宽断言,总之就是匹配个位置,这个位置需要满足某种条件

与神兽党一起成长
be good to each other

神兽党有福了

7k 声望
95 粉丝
0 条评论
推荐阅读
制作一款浏览器插件-查询深圳图书馆馆藏
其他链接地址:[链接][链接]经两周的奋战,终于开发了这一款查询图书馆馆藏的浏览器插件,使用起来非常简单。一、插件说明1)当你打开豆瓣读书页,随便打开一本书的详情,就会在右边栏展示深圳图书馆可借阅的图书...

Honwhy阅读 1.2k

【永久开源】Pear Admin Layui 基于 Layui 的后台管理模板
Pear Admin Layui 是基于 Layui 的后台管理系统模板,扩展Layui原生UI样式,整合第三方开源组件,提供便捷快速的开发方式,延续LayuiAdmin的设计风格,持续完善的样式与组件的维护,基于异步Ajax的菜单构建,相对...

就眠仪式2阅读 7.4k评论 1

jQuery中出现x.easing[this.easing] is not a function的解决办法
x.easing[this.easing] is not a functionQ: 使用jQuery的fadeIn和fadeOut出现以下报错,是由于jQuery版本过高导致,有以下两种解决方案。

泉州牧码人阅读 284

dtcloud使用jquery和echarts
dtcloud中内置了jquery和 Bootstrap的css样式,可以直接使用,并且dtcloud可以解析sass语法,方便大家编写样式,而echarts等文件需要单独加载引入

中亿丰数字科技阅读 221

【全套jQuery】学了一下午,我敢说这一定是最好的笔记!
大家好,我是小索奇学了一下午的jQuery,我做出了“最好的笔记”虽说jQuery已经过时了,但一些项目用的也是旧版的技术、很多高校也正在教这一老套的jQuery技术...了解一下有益无害~本篇文章对应jQuery全套教程,文...

玩篮球的啤酒阅读 195

神兽党有福了

7k 声望
95 粉丝
宣传栏