String.prototype.replaceAll 兼容性问题

最近同事有遇到一个兼容问题,分享了一下,记录一下

 如图,replaceAll() 报错了,查看了下当前chrome浏览器的版本,发现Chrome版本太低,故判定原因为低版本浏览器不支持字符串的replaceAll();

 解决办法如下:

1.  用replace 代替 replaceAll (replace结合正则实现replaceAll的效果

      string.replace(new RegExp(oldString,"gm"),newString))
      gm:g=global, m=multiLine   可以实现替换全部指定字串

2. 自定义一个replaceAll的实现,挂载在String的原型链上;

      String.prototype.replaceAll = function() {}

3. polyfill也是一种解决方案,但有些JS的新标准并没有在所有浏览器上得到支持,在不支持的浏览器上执行一段JS代码,这个JS新特性就可以正常使用,但是需要引入相关的polyfill库,所以不建议;

replace 和 replaceAll 有什么区别呢?

replaceAll(pattern, replacement) 返回一个新字符串,不会改变原字符串;替换所有匹配到的字符串;

replace(pattern, replacement) 返回一个新字符串,替换其中一个或部分字符串;

猜你喜欢

转载自blog.csdn.net/srj15110129498/article/details/127372262