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); }
七天免登陆
<span>用户名:<input type="text"><span>1</span></span> <span>密码:<input type="password"></span> <label><input type="checkbox">七天免登陆</label><input type="button" value="确定">
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="用户名的开头不能用数字"; } }

浙公网安备 33010602011771号