• 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;

  • 相关阅读:
    网络基础 HTTP协议之http url简介
    MySql 简单统计查询消耗时间脚本
    Java java jdk在Linux下安装与环境变量的配置
    MySql 正则表达式简介及使用
    MySql UNIX_TIMESTAMP和FROM_UNIXTIME函数讲解
    MySql 定时任务的使用
    MySql 利用crontab实现MySql定时任务
    MySql 利用mysql&mysqldum导入导出数据
    排错-windows平台下访问oracle em出现空白的解决方法
    Oracle 修改oracle数据库名
  • 原文地址:https://www.cnblogs.com/mzq156416/p/14580774.html
Copyright © 2020-2023  润新知