js replace的一些东西

<!DOCTYPE html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script>
window.onload = kk;
/*今天有人问到js replace的问题;
也回去研究了下顺便整理总结下;
如果有整理错了的地方会不完善的话,望及时纠正;
码农扣扣群:2177712,交流学习*/
function kk(){
	/*模型stringObj.replace(reg,text)*/
	/*↓简单的replace大家应该都明白,就是直接替换reg字符串↓*/
	var demoStr = "Hello world";
	demoStr = demoStr.replace("world","guys");
	/*↑替换world为guys,控制台输出Hello guys↑*/
	console.log(demoStr);
	
	/*↓还有一种reg是正则↓*/
	demoStr = "我们正在竟赛,他竟然不顾竟赛,竟直朝我们走了过来,中止了竟赛";
	/*↑比如上面一篇文章出现了错别字,竞赛打成了竟赛,径直打成了竟直,还出先了多个↑*/
	/*↓如果直接replace('竟赛','竞赛'),再replace('竟直','径直'),你会发现只替换了第一个被匹配到的字符串↓*/
	console.log(demoStr.replace('竟赛','竞赛').replace('竟直','径直'));
	/*↑上面输出--我们正在竞赛,他竟然不顾竟赛,径直朝我们走了过来,中止了竟赛↑*/
	/*↓js是没有Java那种replaceAll替换所有的,所以就需要正则了↓*/
	console.log(demoStr.replace(/竟赛/g,'竞赛').replace(/竟直/g,'径直'));
	/*↑这里用了正则,加个g是全局标志,替换所有匹配到的字符串↑*/
	/*↓还可以这样写↓*/
	console.log(demoStr.replace(/竟赛|竟直/g,function(str){	
		return str=="竟赛"?"竞赛":"径直";
	}));
	/*↑上面这样写确实麻烦了点,只是告诉大家有这种方法,text也可以是函数,每个匹配到的字符串都调用该函数,return的字符串做为替换text使用↑*/
	/*一个函数的用处,替换所有单词首字母大写*/
	console.log('blue yellow dark'.replace(/\b\w+\b/g,function(str){
		return str.substring(0,1).toUpperCase()+str.substring(1);
	}));
	/*\b是定位符,通常匹配单词的边界*/
	
	/*↓还有一个/i是不区分大小写↓*/
	demoStr = "Hello Ok";
	console.log(demoStr.replace(/o/g,"d"));
	/*↑console -- Helld Ok↑*/
	console.log(demoStr.replace(/o/gi,"d"));
	/*↑console -- Helld dk↑*/
	
	/*↓$n的用法↓*/
	demoStr = "I love you";
	/*↓我爱你,为什么你不爱我呢?如何替换为you love I↓*/
	console.log(demoStr.replace(/(\w+)\s(\w+)\s(\w+)/,"$3 $2 $1 不行吗?"));
	/*↑用()创建子匹配,$1表示从左边第一个括号匹配到的字符串,$2表示第二个。。↑*/
	/*↑console you love I 不行吗?(语法不通啊。。。。)↑*/
	/*↑/(\w+)\s(\w+)\s(\w+)/ \w匹配字母数字下划线;+匹配前面的表达式一次或多次;\s匹配一个空白字符↑*/
	
	/*基本的用法就是这些了,其实复杂的地方就复杂的正则表达式上,还得继续学习啊*/
	/*↓再举几个栗子↓*/
	/*↓把首尾字母相同的单词css标红色demoStr可能是取到的一段html,replace后再html(demoStr)↓*/
	demoStr = "kick cook look boob";
	var reg = /\b(\w)\w*\1\b/g;
	console.log(demoStr.replace(reg,function(str){
		return "<span color='red'>"+str+"</span>"
	}));
	/*↑console <span color='red'>kick</span> cook look <span color='red'>boob</span>↑*/
	/*↑这里\1类似$1捕获第一个括号内的表达式,即第一个单词↑*/
	
	reg = /^(\d{4})(-)(\d{2})\2(\d{2})$/g;
	/*↑匹配YYYY-mm-dd的日期格式;^匹配的是字符串的开头,如果在[]里表示的是非;$匹配的是一行的结尾;同理\2表示第二个括号的-↑*/
	console.log("今天是2015-03-31".match(reg));
	console.log("2015-03-31是今天".match(reg));
	console.log("2015-03-31".match(reg));
	/*这里又说到了match,match是检索字符串是否匹配正则,如果不匹配返回的是null,如果匹配的上返回匹配结果的数组,跟reg有没有标志g相关,有兴趣的可以搜搜看*/
	
	/*去html标签*/
	demoStr = "<body><div>Let's <span color='red'>go!<span></div> </body>";
	console.log(demoStr.replace(/<\/?[^>]*>/g,''));
	/*console Let's go! */
	/*解释<就是html标签都有的<;\/是转意的/即html结束标签里的/比如</body>;因为开始标签比如<body>没/所以?表示匹配0次或1次;
	[^>]中括号内的^表示非,不匹配中括号内的字符,即不匹配>;
	*表示0个或n个;最后再加上>;
	正好匹配所有html的标签*/
	
	/*冰山一角,抛砖引玉。码农扣扣群:2177712*/
}
</script>
</head>
<body>
</body>

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值