cookie与正则表达式

cookie
    http协议,超文本传输协议,属于应用层协议(无状态),数据链路层->网络层->传输层->应用层
    cookie的概念,缓存在本地客户端的数据,谷歌可以保存170条,火狐100多条, IE相对少一些,浏览器关闭以后, cookie自动消失,如果不设置时间。
    cookie的操作,增,删,改,查
        console.log(document.cookie);//查询cookie
        document.cookie = "username=honey";
        var oDate = new Date();
        oDate.setDate(oDate.getDate()+3);
        document.cookie = "user=sarah;expire=" + oDate;//设置过期时间
        document.cookie = "username=honey1";//修改cookie
        var oDate = new Date();
        oDate.setDate(oDate.getDate()-1);
        document.cookie = "user=sarah;expire=" + oDate;//设置过期时间,相当于删除cookie 
    cookie的封装 
        function setCookie(name,value,day){
            var oDate = new Date();
            oDate.setDate(oDate.getDate()+day);
            document.cookie(name + "=" + value + ";expire=" + oDate);
        }
        function getCookie(name){
            var str = document.cookie;
            var arr = str.split(";");
            for(i = 0;i < arr.length; i++){
                var arr1 = arr[i].split("=");
                if(arr1[0] == name){
                    return arr1[1];
                }
            }
        }
        function removeCookie(name){
            setCookie(name,1,-1);
        }
    七天免登陆
        var aInput = document.getElementsByTagName("input");
        var uName = aInput[0].value;
        var uPsd = aInput[1].value;
        if(getCookie("name")){
            aInput[0].value = getCookie("name");
            aInput[1].value = getCookie("password");
        }
        if(aInput[2].checked){
            setCookie("name",uName,7);
            setCookie("password",uPsd,7);
        }
    //正则表达式的概念与作用
        //概念,用普通字符和特殊字符组成的对字符串进行过滤的逻辑公式
    //正则表达式的创建方式
        var reg = /abc/;//字面量的方式
        var reg = new RegExp("abc");//构造函数
    //正则表达式的用法 
    //匹配符,g:全局匹配  i忽略大小写 
        //test();是否含有相同的字符串,正则表达时的方法 ture false
            var aes = "abc";
            console.log(reg.test(aes));
        //match();字符串的方法
            var reg1 = /abc/gi;
            var abc = "abcerdfabcsdffABc";
            console.log(abc.match(reg1));//返回数组["abc","abc"],不加g返回不一样
        //search();字符串方法,返回值:第一个匹配的子串下标。
        //spilt();
        //replace();
        //exec();将匹配成功的内容放到数组里,正则表达时的方法
            var reg2 = /abc/gi;
            var abc2 = "abcerdfabcsdffABc";
            var arr = reg2.exec(abc2);
            console.log(reg2.exec(abc2));//这里注意是正则表达时的方法
            console.log(reg2.exec(abc2));//如果要通过exec查找字符串中第二个匹配时,需要加上g,并且要写两遍匹配。
            console.log(arr[0]);
        //.:代表除了换行符之外的所有字符
            var reg3 = /g..gle/;
            var abc3 = "googleg--gle";
            console.log(reg3.test(abc3));//这里注意是正则表达式的方法,.可以代表o也可以代表-
        //*表示重复多次匹配0-n次
            var reg4 = /g*gle/g;
            var abc4 = "gggggggle";
            console.log(reg4.test(abc4),abc4.match(reg4));
        //+至少一次重复匹配,正则表达时的方法
            var reg5 = /g+gle/gi;
            var abc5 = "gle";//因为没有利用到+,所以不成功,ggle则可以,*可以是0次,区别点。
            console.log(reg5.test(abc5));
        //?:0-1次匹配
            var reg6 = /g?gle/gi;
            var abc6 = "ggggle";
            console.log(reg6.test(abc6),abc6.match(reg6));//?也可以重复,返回true,但是match返回只有一个g,ggle
        //[]表示可以出现的范围[0-9]
            var reg7 = /[0-9]/gi;
            var abc7 = "abc";
            console.log(reg7.test(abc7),abc7.match(reg7));//返回false,abc0返回true,有一个匹配就返回true
        // \w:数字字母下划线等同于[0-9a-zA-Z_],\W大写W非数字字母下划线
            var reg8 = /\w+/gi;
            var abc8 = "abc12";
            console.log(reg8.test(abc8),abc8.match(reg8));//任意一个都能被匹配到,没有+,则返回单个元素数组
        //\d 表示数字[0-9] \D表示非数字
        //\s 匹配空格
        //{m,n} 至少匹配m次,至多匹配n次,也可以写{m,},{m}只匹配M次
            var reg9 = /go{3,6}gle/gi;
            var abc9 = "goooogle";
            console.log(reg9.test(abc9),abc9.match(reg9));
        // /^ 匹配开始 $/匹配结尾,从头到尾都需要匹配,不然返回false
            var regg = /^g.+g$/;
            var str1 = "google";//返回false,
        // | 或
            var regg1 = /google|baidu|yahoo/gi;
            var str2 = "www.baidu.com";
        // ()将内容作为一个整体作为匹配
            var regg2 = /(g.+gle){2,3}/gi;
            var str3 = "googlegooglegoogle";//google连续3个才行,
            console.log(regg2.test(str3),str3.match(regg2));
            console.log(RegExp.$1);//返回匹配项中的google
        // $1 $2 $3
            var regg3 = /(.*)\s(.*)/gi;
            var str4 = "baidu taobao";
            console.log(str4.replace(regg3,"$2 $1"));//$1代表baidu,$2代表taobao
        //练习 文本限定数字,字母,下划线6-15位字符,不能用数字开始
            var uName2 = /^[a-zA-Z_]/;
            var uName3 = /\w{5,14}$/;
            var aSpan = document.getElementsByTagName("span");
            aInput[0].oninput = function(){
                if(uName2.test(this.value)){
                    aSpan[1].innerHTML="";
                    if(uName3.test(this.value)){
                        aSpan[1].innerHTML="";
                    }else{
                        aSpan[1].innerHTML="用户名必须使用数字,字母与下划线6-15位";
                    }
                }else{
                    aSpan[1].innerHTML="用户名的开头不能用数字";
                }
            }

猜你喜欢

转载自www.cnblogs.com/solaris-wwf/p/11628554.html
今日推荐