详解JavaScript 中的 replace 方法


Posted in Javascript onJanuary 01, 2016

定义和用法

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

stringObject.replace(regexp/substr,replacement)

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

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

正则字符

replaceValue可以是字符串。如果字符串中有几个特定字符的话,会被转换为特定字符串。

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

下面通过实例给大家介绍:

例子 1

在本例中,我们将使用 "W3School" 替换字符串中的 "Microsoft":

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

输出:

Visit W3School!

例子 2

在本例中,我们将执行一次全局替换,每当 "Microsoft" 被找到,它就被替换为 "W3School":

<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, "W3School"))
</script>

输出:

Welcome to W3School! We are proud to announce that W3School
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);}
 );

正则替换字符串

'I am loser,You are loser'.replace(/loser/g,'hero')
//I am hero,You are hero

使用正则表达式,并将正则的global属性改为true则可以让所有loser都变为hero

使用$&字符给匹配字符加大括号

var sStr='讨论一下正则表达式中的replace的用法';
sStr.replace(/正则表达式/,'{$&}');
//讨论一下{正则表达式}中的replace的用法
使用$`和$'字符替换内容
'abc'.replace(/b/,"$`");
//aac
'abc'.replace(/b/,"$'");
//acc
使用分组匹配组合新的字符串
'nimojs@126.com'.replace(/(.+)(@)(.*)/,"$2$1")
//@nimojs

replaceValue参数可以是一个函数

StringObject.replace(searchValue,replaceValue)中的replaceValue可以是一个函数.

如果replaceValue是一个函数的话那么,这个函数的arguments会有n+3个参数(n为正则匹配到的次数)

先看例子帮助理解:

function logArguments(){  
  console.log(arguments);
//["nimojs@126.com", "nimojs", "@", "126.com", 0, "nimojs@126.com"] 
  return '返回值会替换掉匹配到的目标'
}
console.log(
  'nimojs@126.com'.replace(/(.+)(@)(.*)/,logArguments)
)

参数分别为

匹配到的字符串(此例为nimojs@126.com,推荐修改上面代码的正则来查看匹配到的字符帮助理解)
如果正则使用了分组匹配就为多个否则无此参数。(此例的参数就分别为”nimojs”, “@”, “126.com”。推荐修改正则为/nimo/查看控制台中返回的arguments值)
匹配字符串的对应索引位置(此例为0)
原始字符串(此例为nimojs@126.com)
使用自定义函数将A-G字符串改为小写

'JAVASCRIPT'.replace(/[A-G]/g,function(){
  return arguments[0].toLowerCase();
})
//JaVaScRIPT

使用自定义函数做回调式替换将行内样式中的单引号删除

<span style="font-family:\'微软雅黑\';">demo</span>'.replace(/\'[^']+\'/g,function(){   
  var sResult=arguments[0];
  console.log(sResult);//'微软雅黑'
  sResult=sResult.replace(/\'/g,'');
  console.log(sResult);
//微软雅黑
  return sResult;
})
//<span style="font-family:微软雅黑;">demo</span>

以上内容是小编给大家介绍的avaScript 中的 replace 方法,希望大家喜欢。

Javascript 相关文章推荐
JS类定义原型方法的两种实现的区别评论很多
Sep 12 Javascript
不间断滚动JS打包类,基本可以实现所有的滚动效果,太强了
Dec 08 Javascript
Js 本页面传值实现代码
May 17 Javascript
JS高级调试技巧:捕获和分析 JavaScript Error详解
Mar 16 Javascript
AngularJS入门教程之更多模板详解
Aug 19 Javascript
bootstrap modal弹出框的垂直居中
Dec 14 Javascript
AngularJS实现表单验证功能
Jan 09 Javascript
Vue.js实战之利用vue-router实现跳转页面
Apr 01 Javascript
vue loadmore组件上拉加载更多功能示例代码
Jul 19 Javascript
vue-cli 如何打包上线的方法示例
May 08 Javascript
MVVM 双向绑定的实现代码
Jun 21 Javascript
vue安装和使用scss及sass与scss的区别详解
Oct 15 Javascript
基于JavaScript实现定时跳转到指定页面
Jan 01 #Javascript
Javascript获取数组中的最大值和最小值的方法汇总
Jan 01 #Javascript
实例详解JavaScript获取链接参数的方法
Jan 01 #Javascript
快速学习AngularJs HTTP响应拦截器
Dec 31 #Javascript
常见的javascript跨域通信方法
Dec 31 #Javascript
javascript实现input file上传图片预览效果
Dec 31 #Javascript
分享几种比较简单实用的JavaScript tabel切换
Dec 31 #Javascript
You might like
一个用php实现的获取URL信息的类
2007/01/02 PHP
基于HTTP长连接的&quot;服务器推&quot;技术的php 简易聊天室
2009/10/31 PHP
PHP实现把MySQL数据库导出为.sql文件实例(仿PHPMyadmin导出功能)
2014/05/10 PHP
php字符串按照单词进行反转的方法
2015/03/14 PHP
PHP is_array() 检测变量是否是数组的实现方法
2016/06/13 PHP
php获取目录中所有文件名及判断文件与目录的简单方法
2017/03/04 PHP
PHP常用函数之base64图片上传功能详解
2019/10/21 PHP
firefox下对ajax的onreadystatechange的支持情况分析
2009/12/14 Javascript
bootstrap实现每隔5秒自动轮播效果
2016/12/20 Javascript
vue.js将unix时间戳转换为自定义时间格式
2017/01/03 Javascript
vue.js中Vue-router 2.0基础实践教程
2017/05/08 Javascript
JS实现仿饿了么在浏览器标签页失去焦点时网页Title改变
2017/06/01 Javascript
vue-cli3.0 特性解读
2018/04/22 Javascript
使用jQuery给Table动态增加行、清空table的方法
2018/09/05 jQuery
解决vue无法设置滚动位置的问题
2018/10/07 Javascript
Openlayers显示地理位置坐标的方法
2020/09/28 Javascript
[57:36]DOTA2-DPC中国联赛 正赛 SAG vs CDEC BO3 第三场 2月1日
2021/03/11 DOTA
python根据距离和时长计算配速示例
2014/02/16 Python
详解Python中映射类型(字典)操作符的概念和使用
2015/08/19 Python
Python中操作mysql的pymysql模块详解
2016/09/13 Python
python中sys.argv函数精简概括
2018/07/08 Python
Python理解递归的方法总结
2019/01/28 Python
python使用wxpy实现微信消息防撤回脚本
2019/04/29 Python
PyQt5 多窗口连接实例
2019/06/19 Python
Python实现Restful API的例子
2019/08/31 Python
Scrapy模拟登录赶集网的实现代码
2020/07/07 Python
详解HTML5中CSS外观属性
2020/09/10 HTML / CSS
英国泰坦旅游网站:全球陪同游览,邮轮和铁路旅行
2016/11/29 全球购物
Conforama西班牙:您的家具、装饰和电器商店
2020/02/21 全球购物
德国便宜的宠物店:Brekz.de
2020/10/23 全球购物
总经理司机岗位职责
2014/02/06 职场文书
求职者怎样写自荐信
2014/04/13 职场文书
高中课程设置方案
2014/05/28 职场文书
考试作弊检讨书
2014/10/21 职场文书
全国助残日活动总结
2015/05/11 职场文书
SpringBoot集成Druid连接池连接MySQL8.0.11
2021/07/02 Java/Android