回顾正则,浪费一下午的时间,以下是直接从编辑器中复制的代码,连注释,杂七杂八码了这么多,其中有的在原来代码的基础上直接改的,有些则是全新的。保存下来吧感觉没太大价值,删了又挺可惜,就发到博客上去吧,证明自己今天下午没有百忙。
//***************************正则*****************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,'<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\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));