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 querySelector和getElementById通过id获取元素的区别
Apr 20 Javascript
基于jQuery实现下拉收缩(展开与折叠)特效
Dec 25 Javascript
解决ExtJS在chrome或火狐中正常显示在ie中不显示的浏览器兼容问题
Jan 11 Javascript
让网页跳转到指定位置的jquery代码非书签
Sep 06 Javascript
JS小游戏之宇宙战机源码详解
Sep 25 Javascript
node.js中的fs.chownSync方法使用说明
Dec 16 Javascript
jQuery实现炫酷的鼠标轨迹特效
Feb 01 Javascript
JQuery删除DOM节点的方法
Jun 11 Javascript
jquery常用函数与方法汇总
Sep 01 Javascript
原生 JS Ajax,GET和POST 请求实例代码
Jun 08 Javascript
JS前向后瞻正则表达式定义与用法示例
Dec 27 Javascript
angular 服务的单例模式(依赖注入模式下)详解
Oct 22 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
基于qmail的完整WEBMAIL解决方案安装详解
2006/10/09 PHP
Dedecms V3.1 生成HTML速度的优化办法
2007/03/18 PHP
php中$美元符号与Zen Coding冲突问题解决方法分享
2014/05/28 PHP
laravel 获取当前url的别名方法
2019/10/11 PHP
IE FF OPERA都可用的弹出层实现代码
2009/09/29 Javascript
TreeView 用法(有代码)(asp.net)
2011/07/15 Javascript
JSONP跨域的原理解析及其实现介绍
2014/03/22 Javascript
js实现仿百度风云榜可重复多次调用的TAB切换选项卡效果
2015/08/31 Javascript
Angularjs过滤器使用详解
2016/05/25 Javascript
JS识别浏览器类型(电脑浏览器和手机浏览器)
2016/11/18 Javascript
BootStrap 动态表单效果
2017/06/02 Javascript
Angular.JS中指令ng-if的注意事项小结
2017/06/21 Javascript
微信小程序开发教程之增加mixin扩展
2017/08/09 Javascript
ejsExcel模板在Vue.js项目中的实际运用
2018/01/27 Javascript
解决echarts echarts数据动态更新和dataZoom被重置问题
2020/07/20 Javascript
Python构建XML树结构的方法示例
2017/06/30 Python
使用Flask集成bootstrap的方法
2018/07/24 Python
Python爬取商家联系电话以及各种数据的方法
2018/11/10 Python
win7 x64系统中安装Scrapy的方法
2018/11/18 Python
python pandas cumsum求累计次数的用法
2019/07/29 Python
Django CSRF认证的几种解决方案
2020/03/03 Python
python deque模块简单使用代码实例
2020/03/12 Python
Django Xadmin多对多字段过滤实例
2020/04/07 Python
python 基于DDT实现数据驱动测试
2021/02/18 Python
HTML5使用ApplicationCache接口实现离线缓存技术解决离线难题
2012/12/13 HTML / CSS
关于h5中的fetch方法解读(小结)
2017/11/15 HTML / CSS
澳大利亚汽车零部件、音响及配件超市:Automotive Superstore
2018/06/19 全球购物
美国办公用品折扣网站:Shoplet.com
2019/11/24 全球购物
Gibson London官网:以地道的英国男装而著称
2019/12/06 全球购物
学生宿舍管理制度
2014/01/30 职场文书
母亲节演讲稿
2014/05/27 职场文书
新农村建设典型材料
2014/05/31 职场文书
优秀教师事迹材料
2014/12/15 职场文书
幼儿园工作总结2015
2015/04/01 职场文书
奖励申请报告范文
2015/05/15 职场文书
Python进程池与进程锁之语法学习
2022/04/11 Python