replace() 方法用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串
语法:stringObject.replace(regexp/substr,replacement)
说明:regexp/substr(必须),规定子字符串或要替换的模式的RegExp对象。如果该值是一个字符串,则将它作为要检索的直接量文本模式,而不是首先被转换为RegExp对象。
replacement(必须): 替换文本或生成替换文本的函数
返回值:一个用replacement替换了regexp的第一次匹配或所有匹配之后得到的新字符串。
replacement是字符串:
基本用法1:
var str="Visit Microsoft!"
console.log(str.replace(/Microsoft/, "W3School")); // Visit W3School!
replacement 中的 $ 字符具有特定的含义
- $1、$2、...、$99 表示从左到右,正则子表达式(组)匹配到的文本
// 将把 "Doe, John" 转换为 "John Doe" 的形式
var name = "Doe, John";
name.replace(/(\w+)\s*, \s*(\w+)/, "$2 $1"); // John Doe
// 把所有的花引号替换为直引号
var name2 = '"a", "b"';
name2.replace(/"([^"]*)"/g, "'$1'"); // "'a', 'b'"
- $& 表示regexp 相匹配的子串。
var str = 'Visit Microsoft';
str = str.replace(/Visit Microsoft/g,"$& ,W3School");
console.log(str); // Visit Microsoft ,W3School
- $` 位于匹配子串左侧的文本。
var str = 'Visit Microsoft';
str = str.replace(/Microsoft/g,'$`');
console.log(str); // Visit Visit
- $' 位于匹配子串右侧的文本。
var str = 'Visit Microsoft';
str = str.replace(/Visit/g,"$'");
console.log(str); // Microsoft Microsoft
- $$ 直接量符号 插入一个"$"
var str = "javascript";
str = str.replace(/java/,"$$")
console.log(str); // $script
replacement是函数:
函数参数: match表示匹配的子串(对应上面的$&);
p1, p2,... 假如replace()方法的第一个参数是一个RegExp
对象,则代表第n个括号匹配的字符串。(对应于上述的$1,$2等。)例如,如果是用 /(\a+)(\b+)/
这个来匹配,p1
就是匹配的 \a+
,p2
就是匹配的 \b+
。
offset 匹配到的子字符串在原字符串中的偏移量。(比如,如果原字符串是 'abcd'
,匹配到的子字符串是 'bc'
,那么这个参数将会是 1)
string 被匹配的原字符串。
(精确的参数个数依赖于 replace()
的第一个参数是否是一个正则表达式(RegExp
)对象,以及这个正则表达式中指定了多少个括号子串。)
另外推荐一个正则可视化的网站工具:https://regexper.com