zoukankan      html  css  js  c++  java
  • (五)JS学习笔记

    Sizzle词法解析

    sizzle对于分组过滤处理都用正则,其中都有一个特点,就是都是元字符^开头,限制匹配的初始,所以tokenize也是从左边开始一层一层的剥离。

    •可能会应用到正则如下:

    // 空白
    var whitespace = "[\x20\t\r\n\f]";
    
    // 匹配后任意字符,字母或数字或-,ascii值非x00-xa0范围内的字符
    var characterEncoding = "(?:\\.|[\w-]|[^\x00-\xa0])+" 
    
    var identifier = characterEncoding.replace( "w" , "w#" )  
    
    // 匹配关系符> + ~
    var rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" )  
    
    // 匹配=[非'非"]
    var rattributeQuotes = new RegExp( "=" + whitespace + "*([^\]'"]*?)" + whitespace + "*\]" , "g" )  

    •正则组合:

    ///^#((?:\.|[w-] | [^x00-xa0] ) +)/var ID = new RegExp("^#(" + characterEncoding + ")")

    匹配ID,例如:$('#id')

    var TAG =  new RegExp( "^(" + characterEncoding.replace( "w", "w*" ) + ")" );

    匹配标签,例如:$('input')

    var Class = new RegExp( "^\.(" + characterEncoding + ")" );

    匹配class名,例如:$('.test')

    attributes = "\[" + whitespace + "*(" + characterEncoding + ")" + whitespace +
                   "*(?:([*^$|!~]?=)" + whitespace + "*(?:(['"])((?:\\.|[^\\])*?)\3|(" + identifier + ")|)|)" + whitespace + "*\]"
    匹配属性选择器,例如:[arr^='val']
       捕获组1:characterEncoding :匹配例子中arr
       捕获组2:([*^$|!~]?=):匹配例子中^=
       捕获组3:['"]:匹配例子中'
       捕获组4:(?:\\.|[^\\])*? 解释一下这个外层捕获和后面的任意数量字符或非字符,内层有?:是不捕获的,匹配例子中的val
       捕获组5:匹配identifier,匹配[id=#a]的情况
     
    pseudos = ":(" + characterEncoding + ")(?:\(((['"])((?:\\.|[^\\])*?)\3|((?:\\.|[^\\()[\]]|" + attributes.replace( 3, 8 ) + ")*)|.*)\)|)"  
    匹配伪类表达式,例如li:nth-child(2n+1)
       捕获组1:characterEncoding :匹配例子中nth-child
       捕获组2:匹配例子中的2n+1
       捕获组3:匹配' or "
       捕获组4:匹配和后面任何字符或非字符
       捕获组5:匹配不再' or "内的和后面任意字符或非()[]字符或attributes
  • 相关阅读:
    Python学习 5day__基础知识
    pycharm 2018.1 专业版激活 亲测可用!!!
    JQuery 中 find() 和 filter() 的区别
    React 事件处理
    React 数据传递
    js操作cookie的一些注意项
    html5的技术要点
    css背景设置,让套图中某张图片居中显示的例子
    js对象封装内部图片的相关代码,采用base64图片串
    针对网上很多抱怨的言论,写了一个EF中update对象时,通用的遍历赋值方法,以供参考
  • 原文地址:https://www.cnblogs.com/huair_12/p/4181973.html
Copyright © 2011-2022 走看看