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 相关文章推荐
初试jQuery EasyUI 使用介绍
Apr 01 Javascript
用apply让javascript函数仅执行一次的代码
Jun 27 Javascript
50个比较实用jQuery代码段
Sep 18 Javascript
JS实现的自定义右键菜单实例二则
Sep 01 Javascript
EasyUI在表单提交之前进行验证的实例代码
Jun 24 Javascript
浅谈jQuery的bind和unbind事件(绑定和解绑事件)
Mar 02 Javascript
Angularjs中date过滤器失效的问题及解决方法
Jul 06 Javascript
Vee-validate 父组件获取子组件表单校验结果的实例代码
May 20 Javascript
JavaScript 作用域实例分析
Oct 02 Javascript
Vue+tracking.js 实现前端人脸检测功能
Apr 16 Javascript
vue setInterval 定时器失效的解决方式
Jul 30 Javascript
如何使用jQuery操作Cookies方法解析
Sep 08 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
PHP人民币金额数字转中文大写的函数代码
2013/02/27 PHP
php生成html文件方法总结
2014/12/01 PHP
PHP多维数组指定多字段排序的示例代码
2018/05/16 PHP
详解json在php中的应用
2018/09/30 PHP
laravel中的fillable和guarded属性详解
2019/10/23 PHP
jQuery fadeTo方法调整图片的透明度使用介绍
2013/05/06 Javascript
Jquery倒数计时按钮setTimeout的实例代码
2013/07/04 Javascript
js显示文本框提示文字的方法
2015/05/07 Javascript
禁止按回车键提交表单的方法
2015/06/11 Javascript
js实现input框文字动态变换显示效果
2015/08/19 Javascript
js实现简单的碰壁反弹效果
2016/08/30 Javascript
jQuery实现两个select控件的互移操作
2016/12/22 Javascript
js实现3D图片展示效果
2017/03/09 Javascript
Vue.js实现一个todo-list的上移下移删除功能
2017/06/26 Javascript
浅谈nodejs中的类定义和继承的套路
2017/07/26 NodeJs
微信小程序自定义模态对话框实例详解
2017/08/16 Javascript
js数组实现权重概率分配
2017/09/12 Javascript
vue2.0之多页面的开发的示例
2018/01/30 Javascript
关于vue中watch检测到不到对象属性的变化的解决方法
2018/02/08 Javascript
小程序实现留言板
2018/11/02 Javascript
Vue实现简单分页器
2018/12/29 Javascript
Vue使用Proxy监听所有接口状态的方法实现
2019/06/07 Javascript
JavaScript鼠标悬停事件用法解析
2020/05/15 Javascript
react实现复选框全选和反选组件效果
2020/08/25 Javascript
Python模拟百度登录实例详解
2016/01/20 Python
Python中的异常处理try/except/finally/raise用法分析
2019/02/28 Python
jupyter notebook参数化运行python方式
2020/04/10 Python
Html5原生拖拽相关事件简介以及基础实现
2020/11/19 HTML / CSS
Hotels.com香港酒店网:你的自由行酒店订房专家
2018/01/22 全球购物
面向对象概念面试题(.NET)
2016/11/04 面试题
会计自我鉴定范文
2013/10/06 职场文书
上班看电影检讨书
2014/02/12 职场文书
终止合同协议书
2014/04/17 职场文书
妇联主席先进事迹
2014/05/18 职场文书
机关作风整顿个人整改措施2014
2014/09/17 职场文书
2016年毕业实习心得体会范文
2015/10/09 职场文书