JavaScript——replace()方法

本文深入讲解JavaScript中的replace()方法,包括基本用法、参数解析、使用正则表达式进行全局替换,以及通过函数作为替换参数实现更复杂的功能。

replace()方法是String类型用于匹配模式的方法之一。
替换子字符串
string.replace(pattern,str)
第一个参数pattern是一个RegExp对象或一个字符串;
第二个参数是一个字符串或一个函数;
返回被替换后的新字符串,院字符串不改变;
如果pattern是一个字符串,那么只会替换string中的第一个子字符串,想要替换所有的子字符串,patter只能是一个正则表达式,且要有全局标志g;

var str = 'cat bat sat';
var newstr1 = str.replace('at','mn');
alert(str);     //'cat bat sat'
alert(newstr1);   //'cmn bat sat'
var newstr2 = str.replace(/at/g,'mn');
alert(newstr2);  //'cmn bmn smn'

如果第二个参数是一个函数:
只有一个匹配项时,会向函数传递三个参数:模式的匹配项、模式匹配项在字符串中的位置、原始字符串;
正则表达式定义多个捕获组时,传函数的参数依次是:模式的匹配项、第一个捕获组的匹配项、第二个捕获组的匹配项、第三个…模式匹配项在在字符串中的位置和原始字符串。
此函数返回应该被替换的匹配项;

       var str = 'cat bat sat';
		var sub =[], position =[]; 
		var newstr1 = str.replace(/at/g,function(substr,index,inistr){
			sub.push(substr);
			position.push(index);
			return 'mn';
		});
		alert(newstr1);  //cmn bmn smn
		alert(sub);   //at,at,at
		alert(position); //  1,5,9

//捕获组
var Url = 'http://www.nowcoder.com?key=1&key=2&key=3&test=4#hehe';
var sub =[], fir =[],sec=[]; 
var reg = /\??(\w+)=(\w+)&?/g;
//正则表达式reg有两个捕获组
var newstr1 = Url.replace(reg,function(a,first,second){
			sub.push(a);
			fir.push(first);
			sec.push(second);
			return 'yes ';
		 });
		alert(newstr1);   
		//替换后的字符串   http://www.nowcoder.comyes yes yes yes #hehe
		alert(sub);  
		//所有匹配项   ?key=1&,key=2&,key=3&,test=4
		alert(fir); 
		 // 第一个捕获组   key,key,key,test
		alert(sec);  
		//第二个捕获组   1,2,3,4

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值