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=/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));


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值