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 火狐(firefox)不显示本地图片问题解决
Jul 05 Javascript
腾讯与新浪的通过IP地址获取当前地理位置(省份)的接口
Jul 26 Javascript
固定网页背景图同时保持图片比例的思路代码
Aug 15 Javascript
js判断数据类型如判断是否为数组是否为字符串等等
Jan 15 Javascript
js使用循环清空某个div中的input标签值
Sep 29 Javascript
jQuery前端分页示例分享
Feb 10 Javascript
javascript实现dom元素可拖动
Mar 21 Javascript
利用Javascript实现BMI计算器
Aug 16 Javascript
js数字计算 误差问题的快速解决方法
Feb 28 Javascript
一篇文章让你彻底弄懂JS的事件冒泡和事件捕获
Aug 14 Javascript
Vue组件的使用教程详解
Jan 05 Javascript
AngularJS使用Filter自定义过滤器控制ng-repeat去除重复功能示例
Apr 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页面跳转代码 输入网址跳转到你定义的页面
2013/03/28 PHP
PHP易混淆函数的区别及用法汇总
2014/11/22 PHP
Yii控制器中filter过滤器用法分析
2016/07/15 PHP
基于Swoole实现PHP与websocket聊天室
2016/08/03 PHP
php array_udiff_assoc 计算两个数组的差集实例
2016/11/12 PHP
jquery ready函数源代码研究
2009/12/06 Javascript
json对象转字符串如何实现
2012/12/02 Javascript
JavaScript知识点整理
2015/12/09 Javascript
js html css实现复选框全选与反选
2016/10/09 Javascript
微信小程序(六):列表上拉加载下拉刷新示例
2017/01/13 Javascript
详解vue.js之绑定class和style的示例代码
2017/08/24 Javascript
前端常见跨域解决方案(全)
2017/09/19 Javascript
浅谈angularJS2中的界面跳转方法
2018/08/31 Javascript
微信小程序swiper实现滑动放大缩小效果
2018/11/15 Javascript
js/jquery遍历对象和数组的方法分析【forEach,map与each方法】
2019/02/27 jQuery
node Buffer缓存区常见操作示例
2019/05/04 Javascript
vue 解决addRoutes多次添加路由重复的操作
2020/08/04 Javascript
在Python的Flask框架中实现全文搜索功能
2015/04/20 Python
Python实现模拟登录及表单提交的方法
2015/07/25 Python
Python实现的文本编辑器功能示例
2017/06/30 Python
python 3调用百度OCR API实现剪贴板文字识别
2018/09/04 Python
python得到一个excel的全部sheet标签值方法
2018/12/10 Python
python实现狄克斯特拉算法
2019/01/17 Python
Python使用paramiko操作linux的方法讲解
2019/02/25 Python
解决python 上传图片限制格式问题
2019/10/30 Python
NumPy中的维度Axis详解
2019/11/26 Python
Python类反射机制使用实例解析
2019/12/30 Python
基于Python获取照片的GPS位置信息
2020/01/20 Python
Spy++的使用方法及下载教程
2021/01/29 Python
Champs Sports加拿大:北美最大的以商场为基础的专业运动鞋和服装零售商之一
2018/05/01 全球购物
如何在Shell脚本中使用函数
2015/09/06 面试题
心得体会开头
2014/01/01 职场文书
双十佳事迹材料
2014/01/29 职场文书
党员承诺书内容
2014/03/26 职场文书
详解Javascript实践中的命令模式
2021/05/05 Javascript
详解vue身份认证管理和租户管理
2021/05/25 Vue.js