JavaScript String.replace() 方法详解与高级用法

作者:小括号时间:2026-10-26 12:40:49浏览:422

本文详细介绍JavaScript中String.replace()方法的语法与参数。涵盖基础字符串替换、全局正则替换、使用$符号引用子表达式,以及利用回调函数实现复杂字符串处理(如大小写转换、格式重组)的高级技巧。

String.replace() 基础语法与返回值

定义与规范

replace() 函数旨在字符串内以指定字符序列替代原有内容,或替换符合正则表达式规则的子串。

调用格式

stringObject.replace(regexp/substr,replacement)参数 说明 regexp/substr 必选。指定子字符串或用于匹配模式的 RegExp 对象。

若该参数为字符串,则作为直接量文本模式进行检索,而非转换为 RegExp 对象。 replacement 必选。指定替换文本字符串或生成替换文本的函数。

返回结果

生成新字符串,该字符串由 replacement 替换 regexp 首次匹配或全部匹配后构成。

机制解析 字符串 stringObject 的 replace() 方法执行查找并替换逻辑。它在 stringObject 中定位与 regexp 匹配的子串,并使用 replacement 进行替换。若 regexp 包含全局标志 g,则 replace() 替换所有匹配子串;否则仅替换首个匹配子串。

replacement 可为字符串或函数。若为字符串,每个匹配均由该字符串替换。但 replacement 中的 $ 字符具备特定含义,如下表所示,指示从模式匹配获取的字符串如何用于替换。

字符 替换文本 $1、$2、...、$99 对应 regexp 中第 1 至第 99 个子表达式匹配的文本。 $& 对应 regexp 匹配的子串。 $` 位于匹配子串左侧的文本。 $' 位于匹配子串右侧的文本。 $$ 直接量符号。

replacement 参数的特殊含义与函数用法

注意:ECMAScript v3 规定,replace() 方法的参数 replacement 可为函数而非字符串。此时,每个匹配均调用该函数,其返回字符串作为替换文本。该函数首参为匹配模式的字符串。后续参数为与模式中子表达式匹配的字符串,数量可为 0 或多个。再后续参数为声明匹配在 stringObject 中出现位置的整数。末参为 stringObject 本身。 示例 案例 1 本例使用 "jb51.net" 替换字符串中的 "Microsoft":


<script type="text/javascript">
var str="Visit Microsoft!"
document.write(str.replace(/Microsoft/, "jb51.net"))
</script>

输出结果:

Visit jb51.net!

案例 2 本例执行全局替换,每次找到 "Microsoft" 即替换为 "jb51.net":


<script type="text/javascript">
var str="Welcome to Microsoft! "
str=str + "We are proud to announce that Microsoft has "
str=str + "one of the largest Web Developers sites in the world."
document.write(str.replace(/Microsoft/g, "jb51.net"))
</script>

输出结果:

Welcome to jb51.net! We are proud to announce that jb51.net has one of the largest Web Developers sites in the world.

案例 3 可使用本例代码确保匹配字符串大写字符格式正确:


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

案例 4 本例将 "Doe, John" 转换为 "John Doe" 格式:


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

案例 5 本例将所有花引号替换为直引号:


name = '"a", "b"';
name.replace(/"([^"]*)"/g, "'$1'");

案例 6 本例将字符串中所有单词首字母转换为大写:


name = 'aaa bbb ccc';
uw=name.replace(/\b\w+\b/g, function(word){
 return word.substring(0,1).toUpperCase()+word.substring(1);}
 );

String.replace() 高级应用实例

String.replace( ) 概述 语法: var strings = string.replace(regexp, replacement) regexp :执行替换操作的正则表达式。若传入字符串,则按普通字符处理且仅执行一次替换;若为正则表达式且含 global (g) 修饰符,则替换所有目标字符,否则仅执行一次。 replacement :替换后的字符。 返回值为执行替换操作后的字符串。 11 String.replace( ) 基础用法 var text = "javascript 非常强大 !";13 text.replace(/javascript/i, "JavaScript");14 // 返回:JavaScript 非常强大 ! String.replace( ) 替换所有出现的目标字符 var text= "javascript 非常强大 !JAVASCRIPT 是我最喜欢的一门语言 !";17 text.replace(/javascript/ig, "JavaScript");18 // 返回:JavaScript 非常强大 !JavaScript 是我最喜欢的一门语言 ! String.replace( ) 实现位置调换 var name= "Doe, John"; name.replace(/(\w+)\s*,\s*(\w+)/, "$2 $1"); // 返回:John Doe String.replace( ) 实现将所有双引号包含的字符替换成中括号包含的字符 var text = '"JavaScript" 非常强大!';25 text.replace(/"([^"]*)"/g, "[$1]");26 // 返回:[JavaScript] 非常强大! String.replace( ) 将所有字符首字母大写 var text = 'a journey of a thousand miles begins with single step.';29 text.replace(/\b\w+\b/g, function(word) {30 return word.substring(0,1).toUpperCase( ) +31 word.substring(1);32 });33 34 // 返回:A Journey Of A Thousand Miles Begins With Single Step.

作者最新文章