JavaScript中使用replace结合正则实现replaceAll的效果

 更新时间:2023年07月30日 23:43:07   投稿:mdxy-dxy  
JavaScript 中使用 replace 达到 replaceAll的效果,其实就用利用的正则的全局替换。

我们在Java中可以使用replaceAll()方法对字符串进行批量替换,但在JS中replaceAll()方法是undefined,JS中只存在replace()方法,因此我们可以自己封装JS中replaceAll()方法供我们便捷使用。

总结一下, 四种方式

1. 使用具有全局标志g的正则表达式

var str = "dogdogdog";
var str2 = str.replace(/dog/g,"cat");
console.log(str2);

实现替换全部匹配字符串,输出结果为:catcatcat

2. 使用另一种具有全局标志g的正则表达式

var str = "dogdogdog";
var str2 = str.replace(new RegExp("dog","gm"),"cat");
console.log(str2);

输出结果同上例。这里g表示执行全局匹配,m表示执行多次匹配。

3. 给string对象添加原型方法replaceAll()

String.prototype.replaceAll = function(s1, s2) {
    return this.replace(new RegExp(s1, "gm"), s2);
}

这样就可以像使用replace方法一样使用replaceAll方法:

var str = "dogdogdog";
var str2 = str.replaceAll("dog", "cat");
console.log(str2);

输出结果同上例。

4. 使用先split,再join的方法

评论区@默默之分享的这个方法太赞了,拉到正文里以免有人不看评论,感谢@默默之分享。

var str = "dogdogdog";
var str2 = str.split("dog").join("cat")
console.log(str2);

输出结果同上例。

下面是其它网友的补充

一、使用replace()方法进行替换

定义一个字符串:

var str = "hello world";

使用replace()方法将字符串中的字母"l"替换成"i",原始做法:

 console.log(str.replace("l","i"));

输出:

“heilo world”

需要执行三次,非常不方便;

二、使用replaceAll()方法替换

封装replaceAll()方法:

String.prototype.replaceAll = function(s1, s2) {
    return this.replace(new RegExp(s1, "gm"), s2);
}

定义一个字符串:

var str = "hello world";

使用replaceAll()方法进行批量替换:

console.log(str.replaceAll("l", "i"));

输出:

“heiio worid”

只需要执行一次,就完成了全部替换需求。

replace方法:

string.replace(new RegExp(oldString,"gm"),newString))

gm 分别代表:
g=global, m=multiLine
大致上方法就是这样的,可以实现替换全部指定字串

另一个简单的验证JS的方法:

在浏览器地址栏输入
javascript:alert("abcabcabc".replace(new RegExp("a","gm"),"ad"))

这样比较省事 ;),不知道多行的会不会很方便

相关文章

  • 导航跟随滚动条置顶移动示例代码

    导航跟随滚动条置顶移动示例代码

    滚动条滚动时如何让导航置顶移动,这种效果已经在很多网看到了,所以本文也来实现一个,感兴趣的朋友可以学习下
    2013-09-09
  • javascript深拷贝的原理与实现方法分析

    javascript深拷贝的原理与实现方法分析

    这篇文章主要介绍了javascript深拷贝的原理与实现方法,简单分析了值传递和引用传递的原理与实现方法,并结合实例形式给出了深拷贝的具体实现技巧,需要的朋友可以参考下
    2017-04-04
  • 微信小程序getLocation 需要在app.json中声明permission字段

    微信小程序getLocation 需要在app.json中声明permission字段

    这篇文章主要介绍了微信小程序getLocation 需要在app.json中声明permission字段,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-03-03
  • 用函数式编程技术编写优美的 JavaScript_ibm

    用函数式编程技术编写优美的 JavaScript_ibm

    函数式编程语言在学术领域已经存在相当长一段时间了,但是从历史上看,它们没有丰富的工具和库可供使用。随着 .NET 平台上的 Haskell 的出现,函数式编程变得更加流行。一些传统的编程语言,例如 C++ 和 JavaScript,引入了由函数式编程提供的一些构造和特性。在许多情况下,JavaScript 的重复代码导致了一些拙劣的编码。如果使用函数式编程,就可以避免这些问题。此外,可以利用函数式编程风格编写更加优美的回调。
    2008-05-05
  • JavaScript常用判断写法大全(推荐)

    JavaScript常用判断写法大全(推荐)

    这篇文章主要介绍了JavaScript常用判断写法(推荐)的相关资料,非常不错具有参考借鉴价值,需要的朋友可以参考下
    2016-05-05
  • 如何自己实现JavaScript的new操作符

    如何自己实现JavaScript的new操作符

    new大家肯定都不陌生,单身没有对象的时候就new一个,很方便。那么它在创建实例的时候,具体做了哪些操作呢?今天我们就来一起分析一下。
    2021-04-04
  • 详解JavaScript (!!) 中的双感叹号是干什么用的

    详解JavaScript (!!) 中的双感叹号是干什么用的

    JavaScript 不是静态语言,而是动态语言,这意味着变量可以引用或保存任何类型的值,此外,该类型可以随时更改,这篇文章主要介绍了JavaScript (!!) 中的双感叹号作用,需要的朋友可以参考下
    2022-09-09
  • select多选 multiple的使用示例

    select多选 multiple的使用示例

    使用multiple可以实现select多选,本例将为大家介绍下select多选 multiple的使用,新手朋友们可以学习下
    2014-06-06
  • 小程序实现订单倒计时功能

    小程序实现订单倒计时功能

    这篇文章主要为大家详细介绍了小程序实现订单倒计时功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-04-04
  • JS实现闭包中的沙箱模式示例

    JS实现闭包中的沙箱模式示例

    这篇文章主要介绍了JS实现闭包中的沙箱模式,结合实例形式分析了闭包模块化实现沙箱模式的原理、步骤与相关操作技巧,需要的朋友可以参考下
    2017-09-09

最新评论