• js小知识-replace的回调函数


    replace() 方法返回一个由替换值替换一些或所有匹配的模式后的新字符串。模式可以是一个字符串或者一个正则表达式, 替换值可以是一个字符串或者一个每次匹配都要调用的函数。

    注意:原字符串不会改变。

    语法

    str.replace(regexp|substrnewSubStr|function)

    参数

    regexp (pattern)
    一个RegExp 对象或者其字面量。该正则所匹配的内容会被第二个参数的返回值替换掉。
    substr (pattern)
    一个要被 newSubStr 替换的字符串。其被视为一整个字符串,而不是一个正则表达式。仅仅是第一个匹配会被替换。
    newSubStr (replacement)
     用于替换掉第一个参数在原字符串中的匹配部分的字符串。该字符串中可以内插一些特殊的变量名。参考下面的使用字符串作为参数
    function (replacement)
    一个用来创建新子字符串的函数,该函数的返回值将替换掉第一个参数匹配到的结果。参考下面的指定一个函数作为参数

    返回值

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

    描述

    该方法并不改变调用它的字符串本身,而只是返回一个新的替换后的字符串。

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

    使用字符串作为参数

    替换字符串可以插入下面的特殊变量名:

    变量名 代表的值
    $$ 插入一个 "$"。
    $& 插入匹配的子串。
    $` 插入当前匹配的子串左边的内容。
    $' 插入当前匹配的子串右边的内容。
    $n

    假如第一个参数是 RegExp对象,并且 n 是个小于100的非负整数,那么插入第 n 个括号匹配的字符串。

    指定一个函数作为参数

    你可以指定一个函数作为第二个参数。在这种情况下,当匹配执行后, 该函数就会执行。 函数的返回值作为替换字符串。 (注意:  上面提到的特殊替换参数在这里不能被使用。) 另外要注意的是, 如果第一个参数是正则表达式, 并且其为全局匹配模式, 那么这个方法将被多次调用, 每次匹配都会被调用。

    下面是该函数的参数:

    变量名 代表的值
    match 匹配的子串。(对应于上述的$&。)
    p1,p2, ...

    假如replace()方法的第一个参数是一个RegExp 对象,则代表第n个括号匹配的字符串。(对应于上述的$1,$2等。)

    offset

    匹配到的子字符串在原字符串中的偏移量。(比如,如果原字符串是“abcd”,匹配到的子字符串是“bc”,那么这个参数将是1)

    string 被匹配的原字符串。

    (精确的参数个数依赖于replace()的第一个参数是否是一个正则表达式对象, 以及这个正则表达式中指定了多少个括号子串。)

    下面的例子将会使 newString 变成'abc - 12345 - #$*%':

    function replacer(match, p1, p2, p3, offset, string) {
      // p1 is nondigits, p2 digits, and p3 non-alphanumerics
      return [p1, p2, p3].join(' - ');
    }
    var newString = 'abc12345#$*%'.replace(/([^d]*)(d*)([^w]*)/, replacer);
    console.log(newString);  // abc - 12345 - #$*%

    例子2:

    function camelize(str) {
      return str.replace(/-+(.)?/g,function(match,chr){
        return chr ? chr.toUpperCase():''
      })
    }

    camelize('background-color')
    "backgroundColor"

  • 相关阅读:
    com.mongodb.MongoException$CursorNotFound: cursor not found on server异常处理
    Oracle中暂时表空间的清理
    java——数组
    二分查找的感悟
    【转】Linux时间函数之gettimeofday()函数之使用方法
    【转】《APUE》第三章笔记(4)及习题3-2
    【转】APUE习题4.6---测试lseek作用
    【转】linux下a.out >outfile 2>&1重定向问题
    【转】./a.out 2>&1 > outfile
    【转】apue《UNIX环境高级编程第三版》第一章答案详解
  • 原文地址:https://www.cnblogs.com/zhouyangla/p/7456878.html
Copyright © 2020-2023  润新知