zoukankan      html  css  js  c++  java
  • 利用正则表达式进行字符串替换(replace方法)

    语法

    str.replace(regexp|substr, newSubStr|function)
    

    参数

    • regexp (pattern)

      一个RegExp对象或者其字面量。该正则所匹配的内容会被第二个参数的返回值替换掉。

    • substr (pattern)

      一个要被 newSubStr 替换的{{jsxref("String","字符串")}}。其被视为一整个字符串,而不是一个正则表达式。仅仅是第一个匹配会被替换。

    • newSubStr (replacement)

      用于替换掉第一个参数在原字符串中的匹配部分的 {{jsxref("String", "字符串")}}

    • function (replacement)

      一个用来创建新子字符串的函数,该函数的返回值将替换掉第一个参数匹配到的结果。

    返回值

    一个部分或全部匹配由替代模式所取代的新的字符串。

    描述

    上面语法的含义是说:一共两个参数,但是两个参数可以分别传输不同的类型的值。

    可能你看上面BB半天了也没看明白,没关系,我们直接来上代码:

    用法

    1. 基本用法

      var x = "abcda";
      //两个参数都是字符串
      var y = x.replace('a','x');//'xbcda'
      
    2. 进阶用法

      var x = "abcda";
      //前面参数使用正则,后面使用字符串
      var y = x.replace(/a/g,'x');//'xbcdx'
      
    3. 复杂用法

      var x = 'abcda';
      //前面参数使用正则,后面使用字符串
      var y = x.replace(/a/g,function(match){
        return match.toUpperCase();
      });//'AbcdA'
      

    应用场景

    这里只讲复杂用法中的应用场景实际使用,比如有个需求:你需要html文件中的标签之间的所有

    标签中的字符a替换为字符b。当然如果是正则大神的话就可以跳过这里了,主要以下方式比较容易理解,更适合正则新手。

    解决办法:

    
    var allData = "<body>"+'\r\n'+
        			"<div>aaa</div>"+'\r\n'+
        			"<p>aaa</p>"+'\r\n'+
        		"</body>";
    allData = allData.replace(/\<body\>([\s\S]*?)\<\/body\>/g, function(match) {
            return match.replace(/\<p\>(.*?)\<\/p\>/g, function(match1) {
                return match1.replace(/a/g, "b")
            })
        });
    

    PS:在进行全局的搜索替换时,正则表达式需包含 g 标志。

    如果对以上有什么疑问,可以在评论区发表,方便大家进行探讨

  • 相关阅读:
    Count_sort C++
    Priority_Queue C++
    HeapSort C++
    Randomized_QuickSort C++
    QuickSort c++
    我的开发环境
    github and eclipse
    centos 7 install eclipse cdt and use github
    github commands
    文化-梁晓声
  • 原文地址:https://www.cnblogs.com/olddoublemoon/p/6561814.html
Copyright © 2011-2022 走看看