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( )