返回列表索引   上一页   下一页
String.replace( ) 替换一个与正则表达式匹配的子串

可用性

JavaScript 1.2; JScript 3.0; ECMAScript v3

语法

string.replace(regexp, replacement)

参数

regexp

声明了要替换的模式的RegExp对象。如果该参数是一个字符串,则将它作为要检索的直接量文本模式,而不是首先被转换成RegExp对象。

replacement

一个字符串,声明的是替换文本或生成替换文本的函数。详见描述部分。

返回值

一个新字符串,是用replacemenc替换了与regexp的第一次匹配或所有匹配之后得到的。

描述

字符串string的方法replace()执行的是查找并替换的操作。它将在string中查找与regexp相匹配的子串,然后用replacement替换这些子串。如果regexp具有全局性质g,那么replace()将替换所有的匹配子串。否则,它只替换第一个匹配子串。

replacement可能是字符串或函数。如果它是一个字符串,那么每个匹配都将由字符 串替换。但replacement中的$字符具有特殊的含义。如下表所示,它说明从模式匹配得到的字符串将用于替换。

Characters

Replacement

$1, $2, ... $99

与regexp中的第1到第99个子表达式相匹配的文本

$&

与regexp相匹配的子串

$`

位于匹配子串左侧的文本

$'

位于匹配子串右侧的文本

$$

直接量$符号

ECMAScript v3规定,replace()方法的参数replacement可以是函数而不是字符串,JavaScipt 1.2和JScript 5.5实现了这一特性。在这种情况下,每个匹配都调用该函数,它返回的字符串将作为替换文本使用。该函数的第一个参数是匹配模式的字 符串。接下来的参数是与模式中的子表达式匹配的字符串,可以有0个或多个这样的参数。接下来参数是一个整数,声明了匹配在string中出现的位置。最后一个参数是string自身。

示例

要确保单词“JavaScript'’中的大写字符是正确的,可用下列代码:

text.replace(/javascript/i, "JavaScript"); 

要将名字“Doe,John”转换成“JohnDoe”的形式,可用下列代码:

name.replace(/(\w+)\s*,\s*(\w+)/, "$2 $1"); 

用花引号替换直引号,可用下列代码:

text.replace(/"([^"]*)"/g, "``$1''"); 

使字符串中所有单词的第一个字母都是大写的,可用下列代码:

text.replace(/\b\w+\b/g, function(word) {

                           return word.substring(0,1).toUpperCase(  ) +

                                  word.substring(1);

                         }); 

参阅

RegExp, RegExp.exec( ), RegExp.test( ), String.match( ), String.search( )

    返回列表索引   上一页   下一页