• js正则


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

    //***************************正则*****************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));


  • 相关阅读:
    Qomo 2.0 beta1 发布说明及新功能
    安徽高考少输入的6个字节猜想
    惠普ERP解决方案
    ERP的昨天、今天和明天
    MSN和QQ文件传输速度解析
    JavaScript的方法与技巧
    六步走 教你制定一个漂亮的项目计划
    《时代》评出50个最酷网站 25个网站非上不可
    从圣雄甘地名言 看安腾开放架构
    .net framework 3.0
  • 原文地址:https://www.cnblogs.com/chayangge/p/4288685.html
Copyright © 2020-2023  润新知