正则的贪婪和懒惰

		/*
		 * 贪婪模式就是在整个正则表达式匹配成功的前提下,尽可能多的去匹配
		 * + * ? {n,m} {n,} {m} [取最大匹配值的字符串]
		 * 
		 * 懒惰模式就是在整个正则表达式匹配成功的前提下,尽可能少的去匹配
		 * +? *? ?? {n,m}? {n,}? {n}? [与上面相反]
		 */
		var str = "adcdefg123";
		var reg = /[a-z]+/g;//使用贪婪模式进行匹配
		console.log(str.replace(reg,"1"));//1123
		
		var reg01 = /[a-z]+?/g;//使用懒惰模式进行匹配
		console.log(str.replace(reg,"1"));//1dcdfeg123
		//在懒惰模式下开启全局,会进行多次匹配,的到的结果不一样
		
		var str01 = "8wwww8 8www8 8wwwwww8";
		var reg02 = /w{3,6}/;//使用贪婪模式进行匹配
		console.log(str01.replace(reg02,"a"));
		
		var reg03 = /8w(.*)w8/;//启用贪婪模式,尽可能多的去匹配除了换行以外的任意字符
		console.log(str01);
		console.log(str01.replace(reg03,"$1"));
		//$1表示匹配上正则表达式第一组的内容
		/*
		 * $0,$1,...$9是代表匹配正则的组
		 * ()起分组作用,将匹配到的结果放到一个集合中,¥相当于集合的名字,1-9就等于索引
		 * $1...$9对应响应的索引
		 */
		var reg04 = /w{3,}/g;
		console.log(str01.replace(reg04,"a"));
		
		var tel = "18710000000";
		var reg05 = /(18)(\d)(\d{8})/;//匹配以18开头的11位数字的字符串
		console.log(tel.replace(reg05,"$3"));
		if(RegExp.$2>5){
			console.log("移动");
		}else{
			console.log("联通");
		}
		
		/*
		 * \1匹配的是所获取1个()匹配的引用,比如/(\d)\1/,匹配两个连续的数字,如33aa中的33
		 * \2匹配的是所获取2个()匹配的引用,比如/(\d)(a)\1/匹配死一个是数字第二个是字符a,然后\1
		 * 必须匹配第一个一样的数字(重复的),引用一次,如1a1可以匹配,但是1a2匹配不上:
		 * 如果/\(\d)(a)\2/,匹配第一个是数字,第二个是a,第三个\2必须是第二个分组()
		 */
		
		var str04 = "3aaaa33aaaa";
		var reg06 = /^(\d)(a)\2{3}/;//匹配以数字开头,后面连续3次出现相同的数字
		console.log(str03.match(reg06));
		
		//search()方法用于检测字符串中指定的子串,或者检索于正则表达式相匹配的子串
		var str05 = "Hello World";
		console.log(str05.search("Hellos"));//找得到返回的子串首字母在字符串的下标,找不打返回-1
		var reg07 = /l/ig;
		console.log(str05.search(reg07));//search()方法不执行全局匹配,会忽略g标识符
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值