博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
js正则
阅读量:6690 次
发布时间:2019-06-25

本文共 6052 字,大约阅读时间需要 20 分钟。

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

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

转载于:https://www.cnblogs.com/chayangge/p/4288685.html

你可能感兴趣的文章
长春7旬老人收藏明信片48年 6千张见证国家变迁
查看>>
最前线|VIPKID正寻求4-5亿美元新一轮融资,估值达60亿美元
查看>>
文 OR 理?答案都在这里!
查看>>
ES6 Module之export
查看>>
XML+JSON面试题都在这里
查看>>
教你如何攻克Kotlin中泛型型变的难点(实践篇)
查看>>
2018Android面试经历
查看>>
不受限对抗样本挑战赛介绍
查看>>
推荐10个Java方向最热门的开源项目(8月)
查看>>
浅解前端必须掌握的算法(三):直接插入排序
查看>>
[译] TensorFlow 教程 #06 - CIFAR-10
查看>>
处理 JavaScript 复杂对象:深拷贝、Immutable & Immer
查看>>
Kotlin 设计模式系列之单例模式
查看>>
阅读SSH的ERP项目【第二篇】
查看>>
如何有效的避免OOM,温故Java中的引用
查看>>
Objective C基础教程 第一章 启程
查看>>
Android开发人员不得不学习的JavaScript基础(一)
查看>>
阿里云在LC3大会上透露未来要做的两件事
查看>>
关于Socket,看我这几篇就够了(三)原来你是这样的Websocket
查看>>
NSHipster: NSRegularExpression 中文版
查看>>