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 相关文章推荐
JS 巧妙获取剪贴板数据 Excel数据的粘贴
Jul 09 Javascript
Web开发者必备的12款超赞jQuery插件
Dec 03 Javascript
jquery 获取表单元素里面的值示例代码
Jul 28 Javascript
巧用replace将文字表情替换为图片
Apr 17 Javascript
Jquery Ajax Error 调试错误的技巧
Nov 20 Javascript
JS实现随机颜色的3种方法与颜色格式的转化
Jan 05 Javascript
jQuery实现滚动到底部时自动加载更多的方法示例
Feb 18 jQuery
详解Vue打包优化之code spliting
Apr 09 Javascript
Vue实现图片与文字混输效果
Dec 04 Javascript
vue实现短信验证码输入框
Apr 17 Javascript
VUE动态生成word的实现
Jul 26 Javascript
实现vuex原理的示例
Oct 21 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
php join函数应用
2011/05/04 PHP
PHP数据类型之整数类型、浮点数的介绍
2013/04/28 PHP
php通过ajax实现双击table修改内容
2014/04/28 PHP
php实现base64图片上传方式实例代码
2017/02/22 PHP
php对象工厂类完整示例
2018/08/09 PHP
一段实时更新的时间代码
2006/07/07 Javascript
用js+xml自动生成表格的东西
2006/12/21 Javascript
为jquery.ui.dialog 增加“在当前鼠标位置打开”的功能
2009/11/24 Javascript
更换select下拉菜单背景样式的实现代码
2011/12/20 Javascript
JS复制到剪贴板示例代码
2013/10/30 Javascript
jquery新的绑定事件机制on方法的使用方法
2014/04/15 Javascript
使用时间戳解决ie缓存的问题
2014/08/20 Javascript
JavaScript设计模式之适配器模式介绍
2014/12/28 Javascript
jquery获得当前html页面源码的方法
2015/07/14 Javascript
Node.js程序中的本地文件操作用法小结
2016/03/06 Javascript
通过正则表达式获取url中参数的简单实现
2016/06/07 Javascript
json实现添加、遍历与删除属性的方法
2016/06/17 Javascript
详解堆的javascript实现方法
2016/11/29 Javascript
利用jquery实现实时更新歌词的方法
2017/01/06 Javascript
Vue.js学习之过滤器详解
2017/01/22 Javascript
Angular路由ui-router配置详解
2018/08/01 Javascript
[43:18]NB vs Infamous 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.22
2019/09/05 DOTA
python集合类型用法分析
2015/04/08 Python
Python爬虫代理IP池实现方法
2017/01/05 Python
Python实现手绘图效果实例分享
2020/07/22 Python
django教程如何自学
2020/07/31 Python
css3实现3d旋转动画特效
2015/03/10 HTML / CSS
中国综合网上购物商城:苏宁易购
2016/08/09 全球购物
C++的几个面试题附答案
2016/08/03 面试题
小学语文业务学习材料
2014/06/02 职场文书
政风行风整改报告
2014/11/06 职场文书
民间借贷被告代理词
2015/05/23 职场文书
公司员工培训管理制度
2015/08/04 职场文书
500字作文之关于爸爸
2019/11/14 职场文书
Django如何与Ajax交互
2021/04/29 Python
总结高并发下Nginx性能如何优化
2021/11/01 Servers