javascript中replace使用方法总结


Posted in Javascript onMarch 01, 2017

ECMAScript提供了replace()方法。这个方法接收两个参数,第一个参数可以是一个RegExp对象或者一个字符串,第二个参数可以是一个字符串或者一个函数。现在我们来详细讲解可能出现的几种情况。

1. 两个参数都为字符串的情况

var text = 'cat, bat, sat, fat';
 // 在字符串中找到at,并将at替换为ond,只替换一次
 var result = text.replace('at', 'ond');
// "cond, bat, sat, fat"
 console.log(result);

2. 第一个参数为RegExp对象,第二个参数为字符串

我们可以发现上面这种情况只替换了第一个at,如果想要替换全部at,就必须使用RegExp对象。

var text = 'cat, bat, sat, fat';
 // 使用/at/g 在全局中匹配at,并用ond进行替换
 var result = text.replace(/at/g, 'ond');
 // cond, bond, sond, fond
 console.log(result);

3. 考虑RegExp对象中捕获组的情况 

RegExp具有9个用于存储捕获组的属性。$1, $2...$9,分别用于存储第一到九个匹配的捕获组。我们可以访问这些属性,来获取存储的值。

var text = 'cat, bat, sat, fat';
 // 使用/(.at)/g 括号为捕获组,此时只有一个,因此所匹配的值存放在$1中
 var result = text.replace(/(.at)/g, '$($1)');
 // $(cat), $(bat), $(sat), $(fat)
 console.log(result);

4. 第二个参数为函数的情况,RegExp对象中不存在捕获组的情况

var text = 'cat, bat, sat, fat';
 // 使用/at/g 匹配字符串中所有的at,并将其替换为ond,
 // 函数的参数分别为:当前匹配的字符,当前匹配字符的位置,原始字符串
 var result = text.replace(/at/g, function(match, pos, originalText) {
  console.log(match + ' ' + pos);
  return 'ond'
 });
 console.log(result);
 // 输出
 /*
  at 1 dd.html:12:9
  at 6 dd.html:12:9
  at 11 dd.html:12:9
  at 16 dd.html:12:9
  cond, bond, sond, fond dd.html:16:5
 */

5. 第二个参数为函数的情况,RegExp对象中存在捕获组的情况

var text = 'cat, bat, sat, fat';
 // 使用/(.at)/g 匹配字符串中所有的at,并将其替换为ond,
 // 当正则表达式中存在捕获组时,函数的参数一次为:模式匹配项,第一个捕获组的匹配项,
 // 第二个捕获组的匹配项...匹配项在字符串中的位置,原始字符串
 var result = text.replace(/.(at)/g, function() {
  console.log(arguments[0] + ' ' + arguments[1] + ' ' + arguments[2]);
  return 'ond'
 });
 console.log(result);
 // 输出
 /*
  cat at 1 
  bat at 6 
  sat at 11 
  fat at 16 
  cond, bond, sond, fond 
 */

以上为replace方法的所有可以使用的情况,下面我们使用replace和正则表达式共同实现字符串trim方法。

(function(myFrame) {
  myFrame.trim = function(str) {
   // ' hello world '
   return str.replace(/(^\s*)|(\s*$)/g, '');
  };
  window.myFrame = myFrame;
 })(window.myFrame || {});
 // 测试
 var str = ' hello world '
 console.log(str.length); // 15
 console.log(myFrame.trim(str).length); // 11

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Code:findPosX 和 findPosY
Dec 20 Javascript
比较新旧两个数组值得增加和删除的JS代码
Oct 30 Javascript
jQuery实现不断闪烁文字的方法
May 15 Javascript
JavaScript数组去重的五种方法
Nov 05 Javascript
更高效的使用JQuery 这里总结了8个小技巧
Apr 13 Javascript
js判断主流浏览器类型和版本号的简单实现代码
May 26 Javascript
jQuery手风琴的简单制作
May 12 jQuery
js实现手机web图片左右滑动效果
Dec 29 Javascript
vue+springboot前后端分离实现单点登录跨域问题解决方法
Jan 30 Javascript
vue iview组件表格 render函数的使用方法详解
Mar 15 Javascript
angular 实现的输入框数字千分位及保留几位小数点功能示例
Jun 19 Javascript
vue实现将一个数组内的相同数据进行合并
Nov 07 Javascript
jQuery validate 验证radio实例
Mar 01 #Javascript
提高JavaScript执行效率的23个实用技巧
Mar 01 #Javascript
使用jQuery的load方法设计动态加载及解决被加载页面js失效问题
Mar 01 #Javascript
分分钟玩转Vue.js组件(二)
Mar 01 #Javascript
js实现带三角符的手风琴效果
Mar 01 #Javascript
JavaScript拖动层Div代码
Mar 01 #Javascript
vue组件间通信解析
Mar 01 #Javascript
You might like
[EPIC] Larva vs Flash ZvT @ Crossing Field [2017-10-09]
2020/03/17 星际争霸
PHP版国家代码、缩写查询函数代码
2011/08/14 PHP
php简单浏览目录内容的实现代码
2013/06/07 PHP
PHP函数getenv简介和使用实例
2014/05/12 PHP
php实现两表合并成新表并且有序排列的方法
2014/12/05 PHP
js截取中英文字符串、标点符号无乱码示例解读
2014/04/17 Javascript
JavaScript代码复用模式详解
2014/11/07 Javascript
浅谈JavaScript字符串与数组
2015/06/03 Javascript
纯css实现窗户玻璃雨滴逼真效果
2015/08/23 Javascript
jQuery实现仿微软首页感应鼠标变化滑动窗口效果
2015/10/08 Javascript
jQuery实现简单的DIV拖动效果
2016/02/19 Javascript
简单的js计算器实现
2016/10/26 Javascript
JS获取年月日时分秒的方法分析
2016/11/28 Javascript
jQuery实现大图轮播
2017/02/13 Javascript
微信小程序 登录的简单实现
2017/04/19 Javascript
JS执行控制之节流模式实例分析
2018/12/21 Javascript
通过实例讲解JS如何防抖动
2019/06/15 Javascript
JavaScript数组排序小程序实现解析
2020/01/13 Javascript
小程序开发之模态框组件封装
2020/04/23 Javascript
[44:41]Fnatic vs Liquid 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
[01:20:47]DOTA2-DPC中国联赛 正赛 Ehome vs Magma BO3 第一场 1月19日
2021/03/11 DOTA
解决Pycharm运行时找不到文件的问题
2018/10/29 Python
matlab灰度图像调整及imadjust函数的用法详解
2020/02/27 Python
Windows下Sqlmap环境安装教程详解
2020/08/04 Python
python进行OpenCV实战之画图(直线、矩形、圆形)
2020/08/27 Python
如何用python写个模板引擎
2021/01/14 Python
bareMinerals官网:矿物质化妆品和护肤品
2018/02/04 全球购物
临床医学专业毕业生的自我评价
2013/10/17 职场文书
车间工艺员岗位职责
2013/12/09 职场文书
中专毕业生自我鉴定
2014/02/02 职场文书
新春联欢会主持词
2014/03/24 职场文书
探亲假请假条
2014/04/11 职场文书
2015年小学远程教育工作总结
2015/07/28 职场文书
乡镇团代会开幕词
2016/03/04 职场文书
go语言中切片与内存复制 memcpy 的实现操作
2021/04/27 Golang
详解CSS不定宽溢出文本适配滚动
2021/05/24 HTML / CSS