详解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 相关文章推荐
this[] 指的是什么内容 讨论
Mar 24 Javascript
CSS常用网站布局实例
Apr 03 Javascript
js 操作css实现代码
Jun 11 Javascript
jquery获取radio值(单选组radio)
Oct 16 Javascript
js实现人才网站职位选择功能的方法
Aug 14 Javascript
JS代码防止SQL注入的方法(超简单)
Apr 12 Javascript
Vue表单实例代码
Sep 05 Javascript
Node.js数据库操作之连接MySQL数据库(一)
Mar 04 Javascript
关于Node.js的events.EventEmitter用法介绍
Apr 01 Javascript
微信小程序开发入门基础教程
Apr 19 Javascript
vue服务端渲染缓存应用详解
Sep 12 Javascript
Javascript中的解构赋值语法详解
Apr 02 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中使用Oracle数据库(2)
2006/10/09 PHP
PHP实现的下载远程图片自定义函数分享
2015/01/28 PHP
PHP中返回引用类型的方法
2015/04/03 PHP
PHP中include/require/include_once/require_once使用心得
2016/08/28 PHP
cnblogs TagCloud基于jquery的实现代码
2010/06/11 Javascript
javaScript复制功能调用实现方案
2012/12/13 Javascript
取消选中单选框radio的三种方式示例介绍
2013/12/23 Javascript
JS+CSS实现带有碰撞缓冲效果的竖向导航条代码
2015/09/15 Javascript
javascript设计简单的秒表计时器
2020/09/05 Javascript
jQuery实现简单的文件上传进度条效果
2020/03/26 Javascript
微信小程序 WXML、WXSS 和JS介绍及详解
2016/10/08 Javascript
详解angularjs利用ui-route异步加载组件
2017/05/21 Javascript
MvcPager分页控件 适用于Bootstrap
2017/06/03 Javascript
JS基于设计模式中的单例模式(Singleton)实现封装对数据增删改查功能
2018/02/06 Javascript
基于rollup的组件库打包体积优化小结
2018/06/18 Javascript
浅谈Redux中间件的实践
2018/07/27 Javascript
jQuery轮播图实例详解
2018/08/15 jQuery
vue 解决循环引用组件报错的问题
2018/09/06 Javascript
JavaScript使用Math.random()生成简单的验证码
2019/01/21 Javascript
element-ui多文件上传的实现示例
2019/04/10 Javascript
vue项目中在外部js文件中直接调用vue实例的方法比如说this
2019/04/28 Javascript
微信小程序开发摇一摇功能
2019/11/22 Javascript
javascript实现固定侧边栏
2021/02/09 Javascript
Python使用Flask框架同时上传多个文件的方法
2015/03/21 Python
python实现文本去重且不打乱原本顺序
2016/01/26 Python
Django URL传递参数的方法总结
2016/08/28 Python
Python利用matplotlib生成图片背景及图例透明的效果
2017/04/27 Python
python实现简单五子棋游戏
2019/06/18 Python
python将字符串转换成json的方法小结
2019/07/09 Python
python print 格式化输出,动态指定长度的实现
2020/04/12 Python
Python实现CAN报文转换工具教程
2020/05/05 Python
python xlsxwriter模块的使用
2020/12/24 Python
纽约的奢华内衣店:Journelle
2016/07/29 全球购物
申请任职学生会干部自荐书范文
2014/02/13 职场文书
2016优秀员工先进事迹材料
2016/02/25 职场文书
基于docker安装zabbix的详细教程
2022/06/05 Servers