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 相关文章推荐
{}与function(){}选用空对象{}来存放keyValue
May 23 Javascript
图片延迟加载的实现代码(模仿懒惰)
Mar 29 Javascript
JS调用CS里的带参方法实例
Aug 01 Javascript
JQuery使用$.ajax和checkbox实现下次不在通知功能
Apr 16 Javascript
JS如何判断是否为ie浏览器的方法(包括IE10、IE11在内)
Dec 13 Javascript
js获取及修改网页背景色和字体色的方法
Dec 29 Javascript
mvvm双向绑定机制的原理和实现代码(推荐)
Jun 07 Javascript
AngularJS服务service用法总结
Dec 13 Javascript
Jquery根据浏览器窗口改变调整大小的方法
Feb 07 Javascript
Vue之mixin全局的用法详解
Aug 22 Javascript
微信小程序文章详情页面实现代码
Sep 10 Javascript
JavaScript如何优化逻辑判断代码详解
Jun 08 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通过文件头检测文件类型通用代码类(zip,rar等)
2010/10/19 PHP
利用PHP获取网站访客的所在地位置
2017/01/18 PHP
PHP redis实现超迷你全文检索
2017/03/04 PHP
jQuery中的.bind()、.live()和.delegate()之间区别分析
2011/06/08 Javascript
js拖拽一些常见的思路方法整理
2014/03/19 Javascript
node.js中使用socket.io制作命名空间
2014/12/15 Javascript
基于javascript html5实现3D翻书特效
2016/03/14 Javascript
JQueryEasyUI框架下的combobox的取值和绑定的方法
2017/01/22 Javascript
详解bootstrap的modal-remote两种加载方式【强化】
2017/01/27 Javascript
jQuery监听浏览器窗口大小的变化实例
2017/02/07 Javascript
Spring Boot+AngularJS+BootStrap实现进度条示例代码
2017/03/02 Javascript
详解vuelidate 对于vueJs2.0的验证解决方案
2017/03/09 Javascript
bootstrap模态框嵌套、tabindex属性、去除阴影的示例代码
2017/10/17 Javascript
使用vuepress搭建静态博客的示例代码
2019/02/14 Javascript
JavaScript 接口原理与用法实例详解
2020/05/12 Javascript
python备份文件的脚本
2008/08/11 Python
python中查找excel某一列的重复数据 剔除之后打印
2013/02/10 Python
Python验证码识别处理实例
2015/12/28 Python
python魔法方法-属性访问控制详解
2016/07/25 Python
浅谈python中字典append 到list 后值的改变问题
2018/05/04 Python
完美解决Pycharm无法导入包的问题 Unresolved reference
2018/05/18 Python
使用python Telnet远程登录执行程序的方法
2019/01/26 Python
用Python获取摄像头并实时控制人脸的实现示例
2019/07/11 Python
python实现密度聚类(模板代码+sklearn代码)
2020/04/27 Python
如何查看浏览器对html5的支持情况
2020/12/15 HTML / CSS
Trina Turk官网:美国时装和泳装品牌
2018/06/10 全球购物
6PM官网:折扣鞋、服装及配饰
2018/08/03 全球购物
财务部出纳岗位职责
2013/12/22 职场文书
写给女朋友的道歉信
2014/01/12 职场文书
关于环保的演讲稿
2014/05/10 职场文书
船舶工程技术专业求职信
2014/08/07 职场文书
2014年文明创建工作总结
2014/11/25 职场文书
《去年的树》教学反思
2016/02/18 职场文书
2016年中学植树节活动总结
2016/03/16 职场文书
springboot实现string转json json里面带数组
2022/06/16 Java/Android
win11电脑关机鼠标灯还亮怎么解决? win11关机后鼠标灯还亮解决方法
2023/01/09 数码科技