replace 方法
更新:2007 年 11 月
返回一个字符串的副本,该字符串的文本已被使用正则表达式或搜索字符串替换。
function replace(rgExp : RegExp, replaceText : String) : String
参数
rgExp
必选。包含正则表达式模式和适用标志的 Regular Expression 对象的实例。也可以是 String 对象或文本。如果 rgExp 不是 Regular Expression 对象的实例,它将被转换为字符串,并对结果进行精确的搜索;字符串将不会被试图转化为正则表达式。replaceText
必选。一个 String 对象或字符串文本,包含用于替换当前字符串对象中 rgExp 的每个成功匹配的文本。在 Jscript 5.5 或更高版本中,replaceText 参数也可是返回替换文本的函数。
备注
在完成指定的替换之后,replace 方法的结果是当前字符串对象的副本。
下面任意的匹配变量都可用于识别最新的匹配及匹配字符串。在需要动态确定替换字符串的文本替换中可以使用匹配变量。
字符 |
含义 |
---|---|
$$ |
$(JScript 5.5 或更高版本) |
$& |
指定当前字符串对象中与整个模式相匹配的部分。(JScript 5.5 或更高版本) |
$` |
指定当前字符串对象中位于 $& 所描述的匹配前面的部分。(JScript 5.5 或更高版本) |
$' |
指定当前字符串对象中位于 $& 所描述的匹配后面的部分。(JScript 5.5 或更高版本) |
$n |
第 n 个捕获到的子匹配,这里 n 为从 1 到 9 的十进制一位数。(JScript 5.5 或更高版本) |
$nn |
第 nn 个捕获到的子匹配,这里 nn 为从 01 到 99 的十进制二位数。(JScript 5.5 或更高版本) |
如果 replaceText 是一个函数,对于每个匹配的子字符串,调用该函数时带有下面的 m + 3 个参数,这里 m 是在 rgExp 中用于捕获的左括弧的个数。第一个参数是匹配的子字符串。接下来的 m 个参数是搜索中捕获到的全部结果。参数 m + 2 是当前字符串对象中发生匹配位置的偏移量,而参数 m + 3 是当前字符串对象。结果为将每一匹配的子字符串替换为函数调用的相应返回值后的字符串值。
Replace 方法更新全局 RegExp 对象的属性。
示例
下面的示例阐释了 replace 方法的用法,即用词“A”替换词“The”的第一个实例。请注意因为该模式区分大小写,所以只替换词“The”的第一个实例。
function ReplaceDemo(){
var r, re; //Declare variables.
var ss = "The man hit the ball with the bat.\n";
ss += "while the fielder caught the ball with the glove.";
re = /The/g; //Create regular expression pattern.
r = ss.replace(re, "A"); //Replace "The" with "A".
return(r); //Return string with replacement made.
}
另外,replace 方法也可以替换模式中的子表达式。下面的示例将字符串中的每对单词进行了交换:
function ReplaceDemo(){
var r, re; //Declare variables.
var ss = "The rain in Spain falls mainly in the plain.";
re = /(\S+)(\s+)(\S+)/g; //Create regular expression pattern.
r = ss.replace(re, "$3$2$1"); //Swap each pair of words.
return(r); //Return resulting string.
}
下面的示例在 JScript 5.5 及更高版本中运行,执行了一个从华氏到摄氏的转换,此例阐释了如何使用一个像 replaceText 那样的函数。若要知道该函数是如何运行的,请传递一个包含数字的字符串,该数字后要紧跟着一个“F”(例如,“Water boils at 212F”)。
function f2c(s) {
var test = /(\d+(\.\d*)?)F\b/g; //Initialize pattern.
return(s.replace
(test,
function($0,$1,$2) {
return((($1-32) * 5/9) + "C");
}
)
);
}
document.write(f2c("Water freezes at 32F and boils at 212F."));