宝哥软件园

jQuery源代码中的chunker常规过滤器分析

编辑:宝哥软件园 来源:互联网 时间:2021-10-08

复制代码如下:var chunker=/((?((?([^()] )|[^()] ) )|[(?[[^[]]*]|[''][^'']*['']|[^[]''] ) ]|\.|[^ ~,([\] ) |[ ~])(s*,s*)?((?3360.| r | n) *)/g,这是Jq中最长的正则,研究了很久,一直是懵懂的。我觉得调试后更容易理解,然后更容易一步一步分析数值。我尽量让图形更直观,用不同的颜色区分,如下图所示:

分组被下面的代码一个一个拆分成数组:复制代码如下: //这里循环的功能是将每个选择器拆分成parts数组,例如div#idp ul li拆分成['div # id ','',' p ',' ul ',' li'] while ((chunker。exec('),==null) {//soFar存储过滤第一层后的选择器字符串,即图片上的分组3 soFar=m[3];//选择器块的第一部分被推入数组部分. push(m[1]);//如果拆分为逗号',',上一组结束,跳出循环,到达另一组选择器,如果(m[2]) {//记录另一组选择器extra=m[3];打破;}}其他,如ID、类等。可以很容易理解。复制代码如下:匹配: {// u00c 0- ufff匹配许多国家或家庭的字母id 3360/#((?3360[ w u00c 0- ufff-]| 。))/,//比如:#myId CLASS: /。((?3360[ w u00c 0- ufff-]| 。))/,//如:myclass name3360/ [name=[''] *(?3360[ w u00c 0- ufff-]| 。)] [''] * ]/,//如:[name=' my name'] attr3360/ [ s *(什么?[ w u00c 0- ufff-]| 。))s*(吗?(S?=)s*(['']*)(。*?)3|)s*]/,//如:[attribute=' value'] tag:/(?3360[ w u00c 0- ufff *-]| 。))/,//如:div p a child:/:(仅|第n个|最后一个|第一个)-child(?((偶数|奇数|[dn -]*)))?/,//如:第一个孩子或:第n个孩子(H5N1) pos :/:(第n个| eq | gt | lt | first | last |偶数|奇数)(?((d*)))?(?=[-] | $)/,//如: th(3)span伪3360/:(?[ w u00c 0- ufff-]| 。) )(?((['']?)((?([^)] )|[^()]*) )2))?///: jlkj kjl(' KL(kklk)KL ')}未完待续.

更多资讯
游戏推荐
更多+