JavaScript replace() 方法

在本例中,我们将执行一次替换,当第一个 "Microsoft" 被找到,它就被替换为 "runoops":

var str="Visit Microsoft! Visit Microsoft!";
var n=str.replace("Microsoft","runoops");

定义和用法

replace() 方法用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。

如果想了解更多正则表达式教程请查看本站的:RegExp 教程 和 our RegExp 对象参考手册.

该方法不会改变原始字符串。


浏览器支持

所有主要浏览器都支持 replace() 方法。


语法

string.replace(searchvalue,newvalue)

参数值

参数描述
searchvalue必须。规定子字符串或要替换的模式的 RegExp 对象。
请注意,如果该值是一个字符串,则将它作为要检索的直接量文本模式,而不是首先被转换为 RegExp 对象。
newvalue必需。一个字符串值。规定了替换文本或生成替换文本的函数。

返回值

类型描述
String一个新的字符串,是用 replacement 替换了 regexp 的第一次匹配或所有匹配之后得到的。

技术细节

JavaScript 版本:1.2

replace函数的第二个参数newvalue比较特殊,它有一下几个特殊字符串:

  • $$  直接量符号(就是当做'$$'字符用)
  • $&  与正则相匹配的字符串
  • $`  匹配字符串左边的字符 
  • $’  匹配字符串右边的字符
  • $1,$2,$,3,…,$n  匹配结果中对应的分组匹配结果

想要消除$的影响可以写成函数的返回值,函数具有一下几个参数:

  • 第一个参数:匹配到的字符串
  • 中间的参数:如果正则使用了分组匹配就为多个否则无此参数
  • 倒数第二个参数:匹配字符串的对应索引位置
  • 最后一个参数:原始字符串

更多实例

实例

执行一个全局替换:

var str="Mr Blue has a blue house and a blue car";
var n=str.replace(/blue/g,"red");

n 输出结果:

Mr Blue has a red house and a red car

实例

执行一个全局替换, 忽略大小写:

var str="Mr Blue has a blue house and a blue car";
var n=str.replace(/blue/gi, "red");

n 输出结果:

Mr red has a red house and a red car

实例

在本例中,我们通过 prototype 为 JavaScript 的 String 对象添加方法,来实现将所有 "Microsoft" 替换为 "runoops":

String.prototype.replaceAll = function(search, replacement) {
    var target = this;
    return target.replace(new RegExp(search, 'g'), replacement);
};