正则表达式之字符串的replace方法

1.首先,正则表达式是什么

正则表达式是用于匹配字符串中字符组合的模式。在 JavaScript中,正则表达式是对象。这些模式被用于 RegExp 的 exectest 方法, 以及 String 的 matchmatchAllreplacesearchsplit 方法。

2.字符串的replace()方法

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

原字符串不会改变。

(1)语法 :str.replace(regexp|substr, newSubStr|function)

  • 当模式(pattern)为字符串时。
    一个将被 newSubStr 替换的 字符串。其被视为一整个字符串,而不是一个正则表达式。仅第一个匹配项会被替换。
    举个例子:
    const str = 'abcc 1212&';
    console.log(str.replace('12', '$')); // abcc $12&
  • newSubStr (replacement)
    用于替换掉第一个参数在原字符串中的匹配部分的字符串。该字符串中可以内插一些特殊的变量名(见MDN)
        const str = 'abcc 1212';
        const reg = /([a-c]+)(\s*)(\d+)/g;
        console.log(str.replace(reg, '$3$2$1')); // 1212 abcc
  • function (replacement)
    一个用来创建新子字符串的函数,该函数的返回值将替换掉第一个参数(这里指的是模式)匹配到的结果

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

该函数的参数,说明如下:
正则表达式之字符串的replace方法_第1张图片
下面给个例子:

        const str = 'abcc 1212';
        const reg = /([a-c]+)\s*(\d+)/g;
        console.log(str.replace(reg, ($0, $1, $2) => {
            return $2 + $1;
        }));
        // $0 = str,即正则表达式reg匹配的子串。
        // $1 = abcc,是([a-c]+)匹配的子串。
        // $2 = 1212,是(\d+)匹配的子串。

结果为:
正则表达式之字符串的replace方法_第2张图片

你可能感兴趣的:(js基础,正则表达式,javascript,前端)