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;
        }
    
  • 相关阅读:
    Linux常用命令ifconfig的相关信息
    搭建路由实例
    httpclient以json形式参数调用http接口并解析返回的报文
    思考(机遇)
    php 对齐方法
    RequireJS简单介绍即使用
    一周小结(2016-06-06~2016-06-12)
    git介绍及使用
    一周小结(2016-05-30~2016-06-04)
    [转] Mou 一个Markdown工具 语法规则文档(最后)
  • 原文地址:https://www.cnblogs.com/web-coding/p/4793090.html
Copyright © 2011-2022 走看看