详解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 相关文章推荐
XENON基于JSON变种
Jul 27 Javascript
jQuery制作拼图小游戏
Jan 12 Javascript
javascript实现简单的全选和反选功能
Jan 05 Javascript
AngularJS仿苹果滑屏删除控件
Jan 18 Javascript
HTML5游戏引擎LTweenLite实现的超帅动画效果(附demo源码下载)
Jan 26 Javascript
js省市县三级联动效果实例
Apr 15 Javascript
JavaScript 字符串数字左补位,右补位,取固定长度,截位扩展函数代码
Mar 25 Javascript
一个有意思的鼠标点击文字特效jquery代码
Sep 23 jQuery
了解JavaScript中的选择器
May 24 Javascript
深入浅析vue全局环境变量和模式
Apr 28 Javascript
element-ui tree结构实现增删改自定义功能代码
Aug 31 Javascript
微信小程序弹窗禁止页面滚动的实现代码
Dec 30 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发送get、post请求的6种方法简明总结
2014/07/08 PHP
解决laravel-admin 自己新建页面里 js 需要刷新一次的问题
2019/10/03 PHP
javascript入门·对象属性方法大总结
2007/10/01 Javascript
jquery ajax 同步异步的执行 return值不能取得的解决方案
2012/01/08 Javascript
jquery用get实现ajax在ie里面刷新不进入后台解决方法
2013/08/12 Javascript
window.open 以post方式传递参数示例代码
2014/02/27 Javascript
jquery获取节点名称
2015/04/26 Javascript
浅析AngularJS中的指令
2016/03/20 Javascript
Jquery和JS获取ul中li标签的实现方法
2016/06/02 Javascript
javascript中apply/call和bind的使用
2017/02/15 Javascript
Omi v1.0.2发布正式支持传递javascript表达式
2017/03/21 Javascript
JS排序之选择排序详解
2017/04/08 Javascript
JavaScript箭头函数_动力节点Java学院整理
2017/06/28 Javascript
jQuery获取table表中的td标签(实例讲解)
2017/07/28 jQuery
微信小程序 MinUI组件库系列之badge徽章组件示例
2018/08/20 Javascript
Layui给数据表格动态添加一行并跳转到添加行所在页的方法
2018/08/20 Javascript
学习LayUI时自研的表单参数校验框架案例分析
2019/07/29 Javascript
vue 页面回退mounted函数不执行的解决方案
2020/07/26 Javascript
Vue实现开关按钮拖拽效果
2020/09/22 Javascript
Openlayers3实现车辆轨迹回放功能
2020/09/29 Javascript
python复制文件到指定目录的实例
2018/04/27 Python
运用Python的webbrowser实现定时打开特定网页
2019/02/21 Python
python sitk.show()与imageJ结合使用常见的问题
2020/04/20 Python
Python通过fnmatch模块实现文件名匹配
2020/09/30 Python
基于HTML5 Canvas的3D动态Chart图表的示例
2017/11/02 HTML / CSS
Max&Co官网:意大利年轻女性时尚品牌
2017/05/16 全球购物
玉兰油美国官网:OLAY美国
2018/10/25 全球购物
早晨薰衣草在线女性精品店:Morning Lavender
2021/01/04 全球购物
2014年秋季新学期寄语
2014/08/02 职场文书
春游踏青活动方案
2014/08/14 职场文书
五心教育心得体会
2014/09/04 职场文书
工作汇报开头与结尾怎么写
2014/11/08 职场文书
上班迟到检讨书
2015/05/06 职场文书
社区扶贫帮困工作总结
2015/05/20 职场文书
工作证明书
2015/06/15 职场文书
vue封装数字翻牌器
2022/04/20 Vue.js