replace的小坑

replace()一个非常常见的字符串的方法,看似非常简单,但是也有一个小坑在!!!
先看一段常见的replace()的用法:

var str = '123456';
var newStr = str.replace(/\d/,'a');
console.log(newStr); // a23456

由于没有给第一个正则表达式加上全局匹配(g),所以只把匹配到的第一个字符替换,如果我们想将其全部替换的话只需要加上一个g就好了

var str = '123456';
var newStr = str.replace(/\d/g,'a');
console.log(newStr); // aaaaaa

我们还可以为替换内容在加一点花样,比如我们想把“a”,”b”的双引号换位单引号

var str = '"a","b"';
var newStr = str.replace(/"([^"]*)"/g,"'$1'");
console.log(newStr);  // 代码并没有错,只是这个编辑器解析的问题

这里的$1是指第一次被匹配到的字符串
其实replace()的第二个参数还可以是一个函数,这个函数接受一个参数,这个参数就是此次匹配到的字符
看下面例子:

var a = ['零','壹','贰','叁','伍','陆','柒',"捌",'玖'];
var n = 112299;
var str = n.toString().replace(/\d/g,function(n){
    return a[n];
});
console.log(str);  // 壹壹贰贰undefinedundefined

最后来一个将’aaa bbb ccc’的每个首字母转化为大写的代码

var str = 'aaa bbb ccc';
var newStr = str.replace(/\w+/g,function (x) {
    return x.substr(0,1).toUpperCase() + x.substr(1);
});
console.log(newStr);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值