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系列(14) 作用域链介绍(Scope Chain)
Apr 12 Javascript
js字符串转换成xml对象并使用技巧解读
Apr 18 Javascript
JavaScript实现将UPC转换成ISBN的方法
May 26 Javascript
深入理解逻辑表达式的用法 与或非的用法
Jun 06 Javascript
Angular2 多级注入器详解及实例
Oct 30 Javascript
socket.io学习教程之基本应用(二)
Apr 29 Javascript
layui导航栏实现代码
May 19 Javascript
浅谈Express异步进化史
Sep 09 Javascript
JS+HTML+CSS实现轮播效果
Nov 28 Javascript
关于JavaScript语句后面的分号问题
Dec 07 Javascript
jQuery插件jsonview展示json数据
May 26 jQuery
Vue.js@2.6.10更新内置错误处机制Fundebug同步支持相应错误监控
May 13 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调用Oracle存储过程
2006/10/09 PHP
ThinkPHP实现ajax仿官网搜索功能实例
2014/12/02 PHP
PHP按指定键值对二维数组进行排序的方法
2015/12/22 PHP
Yii2框架配置文件(Application属性)与调试技巧实例分析
2019/05/27 PHP
用js实现的自定义的对话框的实现代码
2010/03/21 Javascript
实现只能输入数字的input不用replace方法
2013/09/12 Javascript
jQuery性能优化的38个建议
2014/03/04 Javascript
jquery实现的随机多彩tag标签随机颜色和字号大小效果
2014/03/27 Javascript
jquery append()方法与html()方法的区别及使用介绍
2014/08/01 Javascript
jQuery中Form相关知识汇总
2015/01/06 Javascript
JavaScript中的普通函数与构造函数比较
2015/04/07 Javascript
H5用户注册表单页 注册模态框!
2016/09/17 Javascript
easyui tree带checkbox实现单选的简单实例
2016/11/07 Javascript
Ionic + Angular.js实现图片轮播的方法示例
2017/05/21 Javascript
将jquery.qqFace.js表情转换成微信的字符码
2017/12/01 jQuery
ant design vue嵌套表格及表格内部编辑的用法说明
2020/10/28 Javascript
浅谈Vue开发人员的7个最好的VSCode扩展
2021/01/20 Vue.js
vue实现禁止浏览器记住密码功能的示例代码
2021/02/03 Vue.js
[02:36]DOTA2英雄基础教程 一击致命幻影刺客
2013/12/06 DOTA
[02:27]DOTA2英雄基础教程 莱恩
2014/01/17 DOTA
Python代理抓取并验证使用多线程实现
2013/05/03 Python
Python Web开发模板引擎优缺点总结
2014/05/06 Python
跟老齐学Python之编写类之三子类
2014/10/11 Python
实例解析Python的Twisted框架中Deferred对象的用法
2016/05/25 Python
python ansible服务及剧本编写
2017/12/29 Python
使用pyinstaller逆向.pyc文件
2019/12/20 Python
python使用HTMLTestRunner导出饼图分析报告的方法
2019/12/30 Python
python中加背景音乐如何操作
2020/07/19 Python
python和go语言的区别是什么
2020/07/20 Python
Html5元素及基本语法详解
2016/08/02 HTML / CSS
入党积极分子思想汇报范文
2014/01/05 职场文书
公司离职证明标准样本
2014/10/05 职场文书
写景作文评语集锦
2014/12/25 职场文书
ktv服务员岗位职责
2015/02/09 职场文书
分享几个JavaScript运算符的使用技巧
2021/04/24 Javascript
SpringBoot SpringEL表达式的使用
2021/07/25 Java/Android