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 相关文章推荐
理解Javascript_15_作用域分配与变量访问规则,再送个闭包
Oct 20 Javascript
Jquery attr("checked") 返回checked或undefined 获取选中失效
Oct 10 Javascript
通过action传过来的值在option获取进行验证的方法
Nov 14 Javascript
JQuery插件fancybox无法在弹出层使用左右键的解决办法
Dec 25 Javascript
使用js显示当前时间示例
Mar 02 Javascript
jQuery选择器全集详解
Nov 24 Javascript
js事件监听器用法实例详解
Jun 01 Javascript
jQuery实现自动调整字体大小的方法
Jun 15 Javascript
js实现table添加行tr、删除行tr、清空行tr的简单实例
Oct 15 Javascript
jquery判断滚动条距离顶部的距离方法
Sep 05 jQuery
vuex + axios 做登录验证 并且保存登录状态的实例
Sep 16 Javascript
jQuery实现回到顶部效果
Oct 19 jQuery
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
Smarty结合Ajax实现无刷新留言本实例
2007/01/02 PHP
PHP模版引擎原理、定义与用法实例
2019/03/29 PHP
js getElementsByTagName的简写方式
2010/06/27 Javascript
jquery创建一个新的节点对象(自定义结构/内容)的好方法
2013/01/21 Javascript
关于jQuery object and DOM element
2013/04/15 Javascript
JQuery判断radio是否选中并获取选中值的示例代码
2014/10/17 Javascript
5个最顶级jQuery图表类库插件【jquery插件库】
2016/05/05 Javascript
vue实现app页面切换动画效果实例
2017/05/23 Javascript
微信小程序使用image组件显示图片的方法【附源码下载】
2017/12/08 Javascript
vue cli构建的项目中请求代理与项目打包问题
2018/02/26 Javascript
使用live-server快速搭建本地服务器+自动刷新的方法
2018/03/09 Javascript
基于jquery实现左右上下移动效果
2018/05/02 jQuery
d3绘制基本的柱形图的实现代码
2018/12/12 Javascript
JavaScript偏函数与柯里化实例详解
2019/03/27 Javascript
vue中后端做Excel导出功能返回数据流前端的处理操作
2020/09/08 Javascript
JavaScript setTimeout()基本用法有哪些
2020/11/04 Javascript
解析Python中的异常处理
2015/04/28 Python
Python minidom模块用法示例【DOM写入和解析XML】
2019/03/25 Python
python如何实现代码检查
2019/06/28 Python
HTML+CSS3 模仿Windows7 桌面效果
2010/06/17 HTML / CSS
CSS3 Flex 弹性布局实例代码详解
2018/11/01 HTML / CSS
HTML5学习心得总结(推荐)
2016/07/08 HTML / CSS
英国著名的药妆网站:Escentual
2016/07/29 全球购物
美国最大的香水连锁店官网:Perfumania
2016/08/15 全球购物
美国知名玩具品牌:Melissa & Doug
2016/08/16 全球购物
美国现代家具网站:Design Within Reach
2018/07/19 全球购物
日本最大美瞳直送网:Morecontact(中文)
2019/04/03 全球购物
Juice Beauty官网:有机美容产品,护肤与化妆品
2020/06/13 全球购物
可以使用抽象函数重写基类中的虚函数吗
2013/06/02 面试题
常用UNIX 命令(Linux的常用命令)
2015/12/26 面试题
村创先争优活动总结
2014/08/28 职场文书
2015年元旦标语大全
2014/12/09 职场文书
2014年班级工作总结范文
2014/12/23 职场文书
新农村建设指导员工作总结
2015/08/13 职场文书
分析设计模式之模板方法Java实现
2021/06/23 Java/Android
mysql的Buffer Pool存储及原理
2022/04/02 MySQL