回顾正则,浪费一下午的时间,以下是直接从编辑器中复制的代码,连注释,杂七杂八码了这么多,其中有的在原来代码的基础上直接改的,有些则是全新的。保存下来吧感觉没太大价值,删了又挺可惜,就发到博客上去吧,证明自己今天下午没有百忙。
//***************************正则*****************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=/gosogle/; // s 匹配空格 匹配边界 var str='go ogle'; alert(pattern.test(str)); */ /*var pattern=/8(.*)8/; // s 匹配空格 匹配边界 var str='8googlegoogle8'; alert(pattern.test(str)); alert(RegExp.$1);*/ /*var pattern=/8(.*)8/; // s 匹配空格 匹配边界 var str='8googlegoogle8'; document.write(str.replace(pattern,'<strong>baidu</strong>')); */ //******************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,'<strong>$1</strong>'));//google8 8google8 8google //上述结果启用贪婪,匹配了第一个8和最后一个8 */ /* var pattern =/8(.*?)8/; //在后面加个?使用惰性模式 var str='8google8 8google8 8google8'; document.write(str.replace(pattern,'<strong>$1</strong>'));//第一个strong加粗 //上述结果启用惰性模式,匹配了第一个google */ //在上述代码的基础上加g进行全局 /*var pattern =/8(.*)8/g; //在后面加个?使用惰性模式 var str='8google8 8google8 8google8'; document.write(str.replace(pattern,'<strong>$1</strong>'));//所有strong加粗 //上述正则加了?号又开启全局得到想要的结果*/ //还有种方式也能达到该效果([^8]*) 不匹配()中的8 /*var pattern =/8([^8]*)8/g; //用([^8]*)屏蔽了8的匹配 var str='8google8 8google8 8google8'; document.write(str.replace(pattern,'<strong>$1</strong>')); //上述正则加了([^8]*)又开启全局得到想要的结果 */ /* var pattern=/(d+)([a-z])/; var str='123abc'; var t=pattern.exec(str); // 数组第一个值为全部匹配的值,第二个为分组1:123,第三个值为分组2:a alert(t.length); alert(t[0]); //123a alert(t[1]); //123 alert(t[2]); //a */ // 上述代码中 在添加[a-z]后面添加+号,则能完全匹配后面字母abc,而不是只匹配一个a /*var pattern=/(d+)([a-z]+)/; var str='123abc'; var t=pattern.exec(str); // 数组第一个值为全部匹配的值,第二个为分组1:123,第三个值为分组2:abc alert(t.length); alert(t[0]); //123a alert(t[1]); //123 alert(t[2]); //abc */ //上面演示的代码叫捕获性分组 //下面是非捕获性分组 //非捕获性分组只要在不需要捕获返回的分组上加:?即可 /*var pattern=/(?:d+)(?:[a-z])/; var str='123abc'; var t=pattern.exec(str); alert(t.length);//2 alert(t[0]); //123abc alert(t[1]); //123 //上述代码不返回abc,只返回123,其数组长度为2 //也可以在第一个分组上也加?:这样第一个数组也不捕获,那数组长度为1,值为123a */ /* //分组嵌套: 从外往内获取 var pattern=/(a?(b?(c?)))/; var str='abc'; //alert(pattern.exec(str)); //abc,abc,bc,c var t=pattern.exec(str); alert(t.length);//4 alert(t[0]); //abc alert(t[1]); //abc alert(t[2]); //bc alert(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,所以匹配失败,返回null alert(pattern.exec(str)); //返回null */ //换行匹配m 正则中i指支持大小写,g指全局匹配,m指换行匹配 /* var pattern =/^d+/gm; //有^ 有g的情况下需要开启换行m 才能全部匹配数字 var str='1.baidu 2.alibaba 3.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));