详解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实现真实字符串剩余字数提示的实例代码
Oct 22 Javascript
jquery动态添加删除一行数据示例
Jun 12 Javascript
javascript初学者常用技巧
Sep 02 Javascript
js实现按Ctrl+Enter发送效果
Sep 18 Javascript
纯js代码实现未知宽高的元素在指定元素中垂直水平居中显示
Sep 12 Javascript
jQuery Mobile动态刷新页面样式的实现方法
May 28 Javascript
Vue.js之slot深度复制详解
Mar 10 Javascript
微信小程序实现animation动画
Jan 26 Javascript
vue根据值给予不同class的实例
Sep 29 Javascript
移动端滑动切换组件封装 vue-swiper-router实例详解
Nov 25 Javascript
JS highcharts实现动态曲线代码示例
Oct 16 Javascript
js定时器出现第一次延迟的原因及解决方法
Jan 04 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多个字符串替换成同一个的解决方法
2013/06/18 PHP
用php定义一个数组最简单的方法
2019/10/04 PHP
仅IE不支持setTimeout/setInterval函数的第三个以上参数
2011/05/25 Javascript
javascript 模拟坦克大战游戏(html5版)附源码下载
2014/04/08 Javascript
JavaScript使表单中的内容显示在屏幕上的方法
2015/06/29 Javascript
JavaScript图片轮播代码分享
2015/07/31 Javascript
JavaScript中iframe实现局部刷新的几种方法汇总
2016/01/06 Javascript
JavaScript数据结构与算法之栈与队列
2016/01/29 Javascript
JavaScript实现斗地主游戏的思路
2016/02/29 Javascript
浅谈JavaScript中小数和大整数的精度丢失
2016/05/31 Javascript
Javascript 实现计算器时间功能详解及实例(二)
2017/01/08 Javascript
vue-axios使用详解
2017/05/10 Javascript
Vue手把手教你撸一个 beforeEnter 钩子函数
2018/04/24 Javascript
处理JavaScript值为undefined的7个小技巧
2020/07/28 Javascript
js实现购物车商品数量加减
2020/09/21 Javascript
python实现图片批量剪切示例
2014/03/25 Python
python中使用xlrd、xlwt操作excel表格详解
2015/01/29 Python
Python中operator模块的操作符使用示例总结
2016/06/28 Python
python中利用xml.dom模块解析xml的方法教程
2017/05/24 Python
Django使用Celery异步任务队列的使用
2018/03/13 Python
无法使用pip命令安装python第三方库的原因及解决方法
2018/06/12 Python
python 读取.csv文件数据到数组(矩阵)的实例讲解
2018/06/14 Python
基于Pandas读取csv文件Error的总结
2018/06/15 Python
Python collections模块使用方法详解
2019/08/28 Python
python科学计算之scipy——optimize用法
2019/11/25 Python
selenium中get_cookies()和add_cookie()的用法详解
2020/01/06 Python
python GUI库图形界面开发之PyQt5控件数据拖曳Drag与Drop详细使用方法与实例
2020/02/27 Python
Python多线程Threading、子线程与守护线程实例详解
2020/03/24 Python
使用keras框架cnn+ctc_loss识别不定长字符图片操作
2020/06/29 Python
css3个性化字体_动力节点Java学院整理
2017/07/12 HTML / CSS
使用html5+css3来实现slider切换效果告别javascript+css
2013/01/08 HTML / CSS
调查研究项目计划书
2014/04/29 职场文书
工作证明格式及范本
2014/09/12 职场文书
2015年圣诞节寄语
2015/08/17 职场文书
党务工作者主要事迹材料
2015/11/03 职场文书
Python中字符串对象语法分享
2022/02/24 Python