详解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 相关文章推荐
JavaScript使用指针操作实现约瑟夫问题实例
Apr 07 Javascript
javascript元素动态创建实现方法
May 13 Javascript
jquery利用拖拽方式在图片上添加热链接
Nov 24 Javascript
node.js 中国天气预报 简单实现
Jun 06 Javascript
Bootstrap实现带动画过渡的弹出框
Aug 09 Javascript
jquery实现网站列表切换效果的2种方法
Aug 12 Javascript
js实现自定义路由
Feb 04 Javascript
Vue 全家桶实现移动端酷狗音乐功能
Nov 16 Javascript
vue计算属性computed、事件、监听器watch的使用讲解
Jan 21 Javascript
微信小程序实现获取用户信息并存入数据库操作示例
May 07 Javascript
Element-UI中关于table表格的那些骚操作(小结)
Aug 15 Javascript
浅谈vue.watch的触发条件是什么
Nov 07 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运行时强制显示出错信息的代码
2011/04/20 PHP
遭遇php的in_array低性能问题
2013/09/17 PHP
PHP日期函数date格式化UNIX时间的方法
2015/03/19 PHP
YII框架学习笔记之命名空间、操作响应与视图操作示例
2019/04/30 PHP
windows系统php环境安装swoole具体步骤
2021/03/04 PHP
js实现ASP分页函数 HTML分页函数
2006/09/22 Javascript
JavaScript语句可以不以;结尾的烦恼
2007/03/08 Javascript
editable.js 基于jquery的表格的编辑插件
2011/10/24 Javascript
理运用命名空间让js不产生冲突避免全局变量的泛滥
2014/06/15 Javascript
Jquery搜索父元素操作方法
2015/02/10 Javascript
js实现图片和链接文字同步切换特效的方法
2015/02/20 Javascript
JQuery实现鼠标移动图片显示描述层的方法
2015/06/25 Javascript
浅析JavaScript作用域链、执行上下文与闭包
2016/02/01 Javascript
JS获取浮动(float)元素的style.left值为空的快速解决办法
2017/02/19 Javascript
js实现简单的获取验证码按钮效果
2017/03/03 Javascript
vue时间格式化实例代码
2017/06/13 Javascript
swiper 解决动态加载数据滑动失效的问题
2018/02/26 Javascript
再谈Angular4 脏值检测(性能优化)
2018/04/23 Javascript
解决Vue中mounted钩子函数获取节点高度出错问题
2018/05/18 Javascript
如何理解Vue的v-model指令的使用方法
2018/07/19 Javascript
Vue2.0中三种常用传值方式(父传子、子传父、非父子组件传值)
2018/08/16 Javascript
微信小程序访问豆瓣电影api的实现方法
2019/03/31 Javascript
JavaScript鼠标拖拽事件详解
2020/04/03 Javascript
python中管道用法入门实例
2015/06/04 Python
Python实现解析Bit Torrent种子文件内容的方法
2017/08/29 Python
教你使用python实现微信每天给女朋友说晚安
2018/03/23 Python
Python使用Pandas库实现MySQL数据库的读写
2019/07/06 Python
python基于gevent实现并发下载器代码实例
2019/11/01 Python
Python操作注册表详细步骤介绍
2020/02/05 Python
垃圾回收的优点和原理。并考虑2种回收机制
2016/10/16 面试题
经济与贸易专业应届生求职信
2013/11/19 职场文书
幼儿园三八妇女节活动方案
2014/03/11 职场文书
2015年英语教师工作总结
2015/05/20 职场文书
仰望星空观后感
2015/06/10 职场文书
《检阅》教学反思
2016/02/22 职场文书
win10以太网连接不上怎么办?Win10连接以太网详细教程
2022/04/08 数码科技