zoukankan      html  css  js  c++  java
  • js使用正则实现ReplaceAll全部替换

    JS 没有提供replaceAll这样的方法,JS 字符串有replace() 方法。但这个方法只会对匹配到的第一个字串替换。如下例:

    <!DOCTYPE html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <meta http-equiv="X-UA-Compatible" content="IE=edge">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <title>Document</title>
    </head>
    <body>
      <script>
        var str = "abcdefabcdefabcdef";
        var newStr = str.replace("abc","123");
        alert(newStr);
      </script>
    </body>
    </html>

    如果要全部替换的话,JS 没有提供replaceAll这样的方法。使用正则表可以达成Replace 的效果:

    str.replace(/abc/g,"123")

    g 的意义是:执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)。

    <!DOCTYPE html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <meta http-equiv="X-UA-Compatible" content="IE=edge">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <title>Document</title>
    </head>
    <body>
      <script>
        function replaceAll(str){
        if(str != null)
          str = str.replace(/abc/g,"123")
          return str;
        }
        var str = "abcdefabcdefabcdef";
        //var newStr = str.replace("abc","123");
        var newStr = replaceAll(str);
        alert(newStr);
      </script>
    </body>
    </html>

    以上写法有个类同的写法:

    str.replace(new RegExp("abc","gm"),"123")

    g 执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)。

    m 执行多行匹配。

    除此之外,也可以添加 Stirng对象的原型方法:

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

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

    str.replaceAll("abc","123");

    1. str.replace(/oldString/g,newString);

    2. str.replace(new RegExp(oldString,"gm"),newString);

    3. 增加String 对象原型方法 replaceAll;

  • 相关阅读:
    Knockoutjs 实践入门 (2) 绑定事件
    HTTP If-Modified-Since引发的浏览器缓存汇总
    net.sf.json和 com.fasterxml.jackson中对象转json的区别
    JPA EntityManager详解
    Spring JPA中OneToOne和OneToMany用法
    Spring Data JPA中CrudRepository与JpaRepository的不同
    Git提交撤销
    Tomcat启动报StackOverflowError
    Git分支合并冲突解决(续)
    Git分支合并冲突解决
  • 原文地址:https://www.cnblogs.com/mzq156416/p/14580774.html
Copyright © 2011-2022 走看看