详解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 判断上传文件大小及格式代码
Nov 13 Javascript
jquery和css3实现的炫酷时尚的菜单导航
Sep 01 Javascript
推荐一款jQuery插件模板
Jan 09 Javascript
jquery实现页面关键词高亮显示的方法
Mar 12 Javascript
基于jQuery插件实现环形图标菜单旋转切换特效
May 15 Javascript
javascript获取当前的时间戳的方法汇总
Jul 26 Javascript
jquery validate表单验证的基本用法入门
Jan 18 Javascript
微信小程序  简单实例(阅读器)的实例开发
Sep 29 Javascript
Bootstrap布局之栅格系统学习笔记
May 04 Javascript
原生JS实现ajax与ajax的跨域请求实例
Dec 01 Javascript
node.js中ws模块创建服务端和客户端,网页WebSocket客户端
Mar 06 Javascript
Vue实现返回顶部按钮实例代码
Oct 21 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压缩多个CSS为一个css的代码并缓存
2011/04/21 PHP
yii框架通过控制台命令创建定时任务示例
2014/04/30 PHP
PHP中strnatcmp()函数“自然排序算法”进行字符串比较用法分析(对比strcmp函数)
2016/01/07 PHP
针对多用户实现头像上传功能PHP代码 适用于登陆页面制作
2016/08/17 PHP
DEDE实现转跳属性文档在模板上调用出转跳地址
2016/11/04 PHP
Redis在Laravel项目中的应用实例详解
2017/08/11 PHP
php设计模式之正面模式实例分析【星际争霸游戏案例】
2020/03/24 PHP
响应鼠标变换表格背景或者颜色的代码
2009/03/30 Javascript
修改好的jquery滚动字幕效果实现代码
2011/06/22 Javascript
js网页实时倒计时精确到秒级
2014/02/10 Javascript
Javascript实现的Map集合工具类完整实例
2015/07/31 Javascript
用window.onerror捕获并上报Js错误的方法
2016/01/27 Javascript
最细致的vue.js基础语法 值得收藏!
2016/11/03 Javascript
Angularjs中的页面访问权限怎么设置
2016/11/11 Javascript
js控制一个按钮是否可点击(可使用)disabled的实例
2017/02/14 Javascript
BootStrap fileinput.js文件上传组件实例代码
2017/02/20 Javascript
countup.js实现数字动态叠加效果
2019/10/17 Javascript
[05:02]2014DOTA2 TI中国区预选赛精彩TOPPLAY第三弹
2014/06/25 DOTA
python使用三角迭代计算圆周率PI的方法
2015/03/20 Python
在Linux上安装Python的Flask框架和创建第一个app实例的教程
2015/03/30 Python
Python多线程编程之多线程加锁操作示例
2018/09/06 Python
PyQt编程之如何在屏幕中央显示窗体的实例
2019/06/18 Python
python3实现弹弹球小游戏
2019/11/25 Python
使用pyqt 实现重复打开多个相同界面
2019/12/13 Python
tensorflow指定GPU与动态分配GPU memory设置
2020/02/03 Python
Pycharm无法打开双击没反应的问题及解决方案
2020/08/17 Python
什么是托管函数?托管函数有什么用?
2014/06/15 面试题
团员学习总结的自我评价范文
2013/10/14 职场文书
大专生的学习自我评价
2013/12/04 职场文书
办公室秘书岗位职责范本
2014/02/11 职场文书
劲霸男装广告词
2014/03/21 职场文书
如何写股份合作协议书
2014/09/11 职场文书
开展党的群众路线教育实践活动剖析材料
2014/10/13 职场文书
餐厅服务员岗位职责
2015/02/09 职场文书
职场新人知识:如何制定一份合理的工作计划?
2019/09/11 职场文书
Canvas如何做个雪花屏版404的实现
2021/09/25 HTML / CSS