js中字符串的替换

var str = "男的女的老的少的";

alert(str.replace('的',''));


可以看到替换后的str的值为"男女的老的少的",replace(str1,str2)方法替换的只是第一个匹配的字符串,那么如何实现替换全部匹配的字符串呢?

在java语言中有给出的replaceAll方法能够实现这样的功能,但很遗憾javascript没有提供这样的方法,但replace方法要比我们想象的强大,实际上通过它我们可以实现我们的需求的。


第一个例子是参数rgExp 为字符串的情况,下面我们用正则表达式实现全部替换的功能

var str = "男的女的老的少的";
alert(str.replace(new RegExp(/(的)/g),''));

以上实现了字符串的全部替换,但这种正则表达式是有局限的,匹配的是一些特定的字符串,如何匹配动态的字符串呢?

var replaceStr = "的";
alert(str.replace(new RegExp(replaceStr,'gm'),''));

这样我们就完成了匹配字符串的动态赋值。要比我们想象的强大,实际上通过它我们可以实现我们的需求的。


也可以自己写一个replaceAll()方法

/**
 * 字符串替换
 * @param str
 * @param sptr
 * @param sptr1
 * @returns
 * 创建 RegExp 对象的语法:
 * new RegExp(pattern, attributes);
 * 参数 pattern 是一个字符串,指定了正则表达式的模式或其他正则表达式.
 * 参数 attributes 是一个可选的字符串,包含属性 "g"、"i" 和 "m",
 * 分别用于指定全局匹配、不区分大小写的匹配和多行匹配。
 * ECMAScript 标准化之前,不支持 m 属性。
 * 如果 pattern 是正则表达式,而不是字符串,则必须省略该参数
 */
function replaceAll(str,s1,s2) {
    return str.replace(new RegExp(s1,"gm"),s2);
//    return str.replace(new RegExp(s1,"gim"),s2);
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值