zoukankan      html  css  js  c++  java
  • 正则表达式--子表达式

    一个很好的正则子表达式的例子。

    var reg = /^(#)?(.)?(w+)$/img;//包含了3个子表达式。
     var query = function(selector) {
            var reg = /^(#)?(.)?(w+)$/img;
            var regResult = reg.exec(selector);
            var result = [];
            //如果是id选择器
            if(regResult[1]) {
                if(regResult[3]) {
                    if(typeof document.querySelector === "function") {
                        result.push(document.querySelector("#"+regResult[3]));
                    }
                    else {
                        result.push(document.getElementById(regResult[3]));
                    }
                }
            }
            //如果是class选择器
            else if(regResult[2]) {
                if(regResult[3]) {
                    if(typeof document.getElementsByClassName === 'function') {
                        var doms = document.getElementsByClassName(regResult[3]);
                        if(doms) {
                            result = converToArray(doms);
                        }
                    }
                    //如果不支持getElementsByClassName函数
                    else {
                        var allDoms = document.getElementsByTagName("*") ;
                        for(var i = 0, len = allDoms.length; i < len; i++) {
                            if(allDoms[i].className.search(new RegExp(regResult[2])) > -1) {
                                result.push(allDoms[i]);
                            }
                        }
                    }
                }
            }
            //如果是标签选择器
            else if(regResult[3]) {
                var doms = document.getElementsByTagName(regResult[3].toLowerCase());
                if(doms) {
                    result = converToArray(doms);
                }
            }
            return result;
        };
    
        function converToArray(nodes){
            var array = null;
            try{
                array = Array.prototype.slice.call(nodes,0);//针对非IE浏览器
            }catch(ex){
                array = new Array();
                for( var i = 0 ,len = nodes.length; i < len ; i++ ) {
                    array.push(nodes[i])
                }
            }
            return array;
        }
    
  • 相关阅读:
    Maven环境搭建、调试、打包
    JAVA环境变量JAVA_HOME、CLASSPATH、PATH设置详解
    Activiti工作流引擎核心介绍
    NodeJS概述
    JRE集成到Tomcat
    ORACLE递归查询(适用于ID,PARENTID结构数据表)
    爬虫入门——02
    爬虫入门——01
    利用java.lang.reflect.Constructor动态实例化对象
    【java入门点滴】向上转型与向下转型
  • 原文地址:https://www.cnblogs.com/web-coding/p/4793090.html
Copyright © 2011-2022 走看看