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 标志。

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

  • 相关阅读:
    hdoj 2803 The MAX【简单规律题】
    hdoj 2579 Dating with girls(2)【三重数组标记去重】
    hdoj 1495 非常可乐【bfs隐式图】
    poj 1149 PIGS【最大流经典建图】
    poj 3281 Dining【拆点网络流】
    hdoj 3572 Task Schedule【建立超级源点超级汇点】
    hdoj 1532 Drainage Ditches【最大流模板题】
    poj 1459 Power Network【建立超级源点,超级汇点】
    hdoj 3861 The King’s Problem【强连通缩点建图&&最小路径覆盖】
    hdoj 1012 u Calculate e
  • 原文地址:https://www.cnblogs.com/olddoublemoon/p/6561814.html
Copyright © 2011-2022 走看看