回顾正则,浪费一下午的时间,以下是直接从编辑器中复制的代码,连注释,杂七杂八码了这么多,其中有的在原来代码的基础上直接改的,有些则是全新的。保存下来吧感觉没太大价值,删了又挺可惜,就发到博客上去吧,证明自己今天下午没有百忙。
//***************************正则*****************8 /*var pattern=/box/; var str='this is a box'; alert(str.replace(pattern,'tom'));*//*var pattern=/[0-9]{6}/;var str='1350000';alert(pattern.test(str));*//* var pattern=/Box/i; var str='sljrouboxsdgdg'; alert(pattern.test(str)); alert(pattern.exec(str));//匹配到返回匹配到的数组,没有匹配则返回null*//*var pattern=/Box/ig; var str='sljrboxouboxsdgskjdgkboxdgsdgfihsdkghkshgbox'; alert(pattern.test(str)); //alert(pattern.exec(str));// match用法相反,是str.match(pattern) alert(str.match(pattern));// search返回匹配的位置 alert(str.search(pattern));// replace 替换 alert(str.replace(pattern,'iiii'));//split 按匹配的分割 alert(str.split(pattern)); //str=str.split(pattern); //把str改为切割后的字符串 alert(str);*//* var pattern=/go+gle/; // X+表示匹配一个或以上 var str='goooogle'; // X*表示匹配0个或0个以上 alert(pattern.test(str));*//* var pattern=/go*gle/; // X+表示匹配一个或以上 var str='ggle'; // X*表示匹配0个或0个以上 alert(pattern.test(str)); // ? 表匹配 0个或一个*//* var pattern=/go?gle/; // X+表示匹配一个或以上 var str='gogle'; // X*表示匹配0个或0个以上 alert(pattern.test(str)); // ? 表匹配 0个或一个*/ // {n,m} //匹配多个/* var pattern=/go{2,4}gle/; // {m,n} var str='goooogle'; // alert(pattern.test(str)); // 只匹配m-n个*//* // **********{m}只限定m个*********** var pattern=/go{4}gle/; // {m} var str='gooooogle'; // alert(pattern.test(str)); // 只匹配m个*//* // **********{m,}(注意多了个,号)只限定m个或m以上*********** var pattern=/go{4,}gle/; // {m,} var str='gooooooogle'; // alert(pattern.test(str)); // 只匹配m以上个*/ /* // **********[a-z] 一个字母*********** var pattern=/[a-z]oogle/; var str='bbbbboogle'; alert(pattern.test(str)); *//*// **********[0-9] 一个数字*********** var pattern=/[a-z]oogle/; var str='bbbb666boogle'; alert(pattern.test(str)); */// **********^[0-9] '^'以[]中内容开始的匹配*********** /*var pattern=/^[0-9]+oogle/; var str='444oogle'; alert(pattern.test(str)); */// 匹配 行首行位 /*var pattern=/^google$/; //只匹配以google开始,以google结尾的 var str='googlewwwwwgoogle'; alert(pattern.test(str)); *//* var pattern=/^[a-z]google[0-9]+$/; //只匹配以google开始,以google结尾的 var str='agoogle9999'; alert(pattern.test(str)); *//* var pattern=/go\sogle\b/; // \s 匹配空格 \b匹配边界 var str='go ogle'; alert(pattern.test(str)); */ /*var pattern=/8(.*)8/; // \s 匹配空格 \b匹配边界 var str='8googlegoogle8'; alert(pattern.test(str)); alert(RegExp.$1);*/ /*var pattern=/8(.*)8/; // \s 匹配空格 \b匹配边界 var str='8googlegoogle8'; document.write(str.replace(pattern,'baidu'));*///******************8重点******************$1,$2/* var pattern=/(.*)\s(.*)/; var str='google baidu'; alert(str.replace(pattern,'$2 $1'));//位置交换 *///*****贪婪模式/* var pattern =/[a-z]+/; //后面有+,启用贪婪模式 var str='abcdefj'; alert(str.replace(pattern,'1')); //把所有都匹配,替换为一个1*/// +号后面有?,启用惰性模式/*var pattern =/[a-z]+?/; // +号后面有?,启用惰性模式 var str='abcdefj'; alert(str.replace(pattern,'1')); //只匹配第一个字母,替换为一个1*///+号后面有?,再开启全局,每一个字母都会变为1/*var pattern =/[a-z]+?/g; // +号后面有?,再开启全局 var str='abcdefj'; alert(str.replace(pattern,'1')); //每一个字母,都替换为一个1*///贪婪模式 例子/*var pattern =/8(.*)8/; //使用了贪婪模式var str='8google8 8google8 8google8';document.write(str.replace(pattern,'$1'));//google8 8google8 8google//上述结果启用贪婪,匹配了第一个8和最后一个8*//*var pattern =/8(.*?)8/; //在后面加个?使用惰性模式var str='8google8 8google8 8google8';document.write(str.replace(pattern,'$1'));//第一个strong加粗//上述结果启用惰性模式,匹配了第一个google*///在上述代码的基础上加g进行全局/*var pattern =/8(.*)8/g; //在后面加个?使用惰性模式var str='8google8 8google8 8google8';document.write(str.replace(pattern,'$1'));//所有strong加粗//上述正则加了?号又开启全局得到想要的结果*///还有种方式也能达到该效果([^8]*) 不匹配()中的8/*var pattern =/8([^8]*)8/g; //用([^8]*)屏蔽了8的匹配var str='8google8 8google8 8google8';document.write(str.replace(pattern,'$1'));//上述正则加了([^8]*)又开启全局得到想要的结果*//*var pattern=/(\d+)([a-z])/;var str='123abc';var t=pattern.exec(str);// 数组第一个值为全部匹配的值,第二个为分组1:123,第三个值为分组2:aalert(t.length);alert(t[0]); //123aalert(t[1]); //123alert(t[2]); //a*/// 上述代码中 在添加[a-z]后面添加+号,则能完全匹配后面字母abc,而不是只匹配一个a/*var pattern=/(\d+)([a-z]+)/; var str='123abc';var t=pattern.exec(str);// 数组第一个值为全部匹配的值,第二个为分组1:123,第三个值为分组2:abcalert(t.length);alert(t[0]); //123aalert(t[1]); //123alert(t[2]); //abc*///上面演示的代码叫捕获性分组//下面是非捕获性分组//非捕获性分组只要在不需要捕获返回的分组上加:?即可/*var pattern=/(?:\d+)(?:[a-z])/; var str='123abc';var t=pattern.exec(str);alert(t.length);//2alert(t[0]); //123abcalert(t[1]); //123//上述代码不返回abc,只返回123,其数组长度为2//也可以在第一个分组上也加?:这样第一个数组也不捕获,那数组长度为1,值为123a*//*//分组嵌套: 从外往内获取var pattern=/(a?(b?(c?)))/;var str='abc';//alert(pattern.exec(str)); //abc,abc,bc,cvar t=pattern.exec(str);alert(t.length);//4alert(t[0]); //abcalert(t[1]); //abcalert(t[2]); //bcalert(t[3]); //c*///前瞻捕获:捕获某个字符串的前提是前面必须要有某个字符串才能被捕获//这是正常匹配/*var pattern =/goo/;var str='goobb';alert(pattern.exec(str));*///下面是前瞻捕获,goo(?=gle):goo后面必须跟gle才能捕获/*var pattern =/goo(?=gle)/;var str='goobb'; //goobb,goo后面没跟gle,所以匹配失败,返回nullalert(pattern.exec(str)); //返回null*///换行匹配m 正则中i指支持大小写,g指全局匹配,m指换行匹配/*var pattern =/^\d+/gm; //有^ 有g的情况下需要开启换行m 才能全部匹配数字var str='1.baidu\n2.alibaba\n3.google';alert(str.replace(pattern,'#'));*///匹配邮政编码(六位数字,且第一位不为0)/*var str='111111';var pattern=/^[1-9]\d{5}$/;alert(pattern.test(str));*///匹配检查文件压缩包 //文件名(字母数字下划线).zip 或.rar/*var str='111111.rar';var pattern=/^[\w]+\.zip$|rar$/;alert(pattern.test(str));*///去空格/*var pattern=/\s/g; //重点是要开启全局var str='| a sd f gg hj jtrrr f |';alert(str.replace(pattern,''));*///删除首尾空格 (笨方法,需要两次匹配)未完成/*var pattern=/^\s+(.+?)\s+$/; var str='| go o gle |';var result=pattern.exec(str)[1];alert('|'+result+'|');//alert(str.replace(pattern,''));*///简单的 邮箱匹配/*var pattern=/^([\w\.\-\_]+)@(\w)+\.com$|cn$/;var str='w.ch_ua-n232@gmail.com';alert(pattern.test(str));*///网上找的邮箱匹配var pattern=/\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/; //或 /^([a-z0-9_\.-]+)@([\da-z\.-]+)\.([a-z\.]{2,6})$/var str='w.ch_ua-n232@gmail.com';alert(pattern.test(str));