这篇文章主要为大家详细介绍了javascript中replace的使用方法,使用replace和正则表达式共同实现字符串trim方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
ECMAScript提供了replace()方法。这个方法接收两个参数,第一个参数可以是一个RegExp对象或者一个字符串,第二个参数可以是一个字符串或者一个函数。现在我们来详细讲解可能出现的几种情况。

1. 两个参数都为字符串的情况

?
1
2
3
4
5
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对象。

?
1
2
3
4
5
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,分别用于存储第一到九个匹配的捕获组。我们可以访问这些属性,来获取存储的值。

?
1
2
3
4
5
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对象中不存在捕获组的情况

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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对象中存在捕获组的情况

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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方法。

?
1
2
3
4
5
6
7
8
9
10
11
(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

  var n ="32121352132.15" ,
n = n.replace(/\d{1,3}(?=(\d{3})+(\.\d*)?$)/g, '$&,')
document.write(n);

输出32,121,352,132.15

这个/\d{1,3}(?=(\d{3})+(\.\d*)?$)/g中的(?=pattern)正向肯定预查可以查询多次啊,比如第一次查询出123(...),把'123'换成'123,',然后继续查询出456(...),把'456'替换成'456,',再继续查就没有符合的了,所以查询替换停止了,最终替换变成了“123,456,789.00”。
var text = '3213216512.312';// 使用/(.at)/g 匹配字符串中所有的at,并将其替换为ond,// 当正则表达式中存在捕获组时,函数的参数一次为:模式匹配项,第一个捕获组的匹配项,// 第二个捕获组的匹配项...匹配项在字符串中的位置,原始字符串var result = text.replace(/\d{1,3}(?=(\d{3})+(\.\d*)?$)/g,function() {console.log(arguments[0] + '@ ' + arguments[1] + '@ ' + arguments[2]+ '@ ' + arguments[3]);return '$&,'});console.log(result);

输出效果:

3@ 512@ .312@ 0
213@ 512@ .312@ 1
216@ 512@ .312@ 4
$&,$&,$&,512.312

javascript中replace使用方法总结相关推荐

  1. Javascript中二进制数据处理方法

    Javascript中二进制数据处理方法 转载于:https://www.cnblogs.com/motadou/archive/2012/02/19/2358514.html

  2. php中使用confirm,如何使用JavaScript中的confirm()方法

    confirm方法的使用:通过给元素设置confirm函数来创建一个带有确认和取消按钮的提示框,当点击确认时返回true,取消时返回false 今天将讲解JavaScript中confirm() 方法 ...

  3. JavaScript 中的forEach()方法

    JavaScript 中的forEach方法 一.forEach()的定义和用法? 1.第一个是数组的每一项值(必选) 2.第二个是数组下标(可选) 3.第三个是原数组(可选) 4.forEach() ...

  4. JavaScript中的valueOf方法详解

    Object.prototype.valueOf() valueOf() 方法返回指定对象的原始值. 语法 object.valueOf() 返回值 返回值为该对象的原始值. 描述 JavaScrip ...

  5. JavaScript中的部分函数/方法参考

    目录 1.Object.defineProperty方法 2.for.for...in.for...of.forEach方法 for循环(可使用return.break等来中断循环) forEach循 ...

  6. javascript字典中添加数组_如何在JavaScript中使用数组方法:Mutator方法

    JavaScript中的数组由元素列表组成.JavaScript有许多有用的内置方法来处理数组.修改原始数组的方法称为mutator方法,返回新值或表示的方法称为accessor方法.在本教程中,我们 ...

  7. Javascript中的Callback方法浅析

    什么是callback?   回调函数就是一个通过函数指针调用的函数.如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用为调用它所指向的函数时,我们就说这是回调函数.回调函数不是由该函 ...

  8. javascript中常用数组方法详细讲解

    javascript中数组常用方法总结 1.join()方法: Array.join()方法将数组中所以元素都转化为字符串链接在一起,返回最后生成的字符串.也可以指定可选的字符串在生成的字符串中来分隔 ...

  9. Json学习总结(1)——Java和JavaScript中使用Json方法大全

    2019独角兽企业重金招聘Python工程师标准>>> 摘要:JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.它基于ECMAScript ...

最新文章

  1. Windows XP中安装虚拟网卡microsoft loopback adapter
  2. 微信分享链接时,怎样才能带上带缩略图和简介?
  3. 消息中间件的实现方案
  4. linux-用户管理
  5. kaggle房价预测最热解析
  6. Asp.net发布网站
  7. android7.0+关闭wifi连接CA验证
  8. python中type与isinstance异同
  9. linux mysql8源码安装_linux 源码安装mysql8
  10. optuna 自动化调参利器
  11. vue项目 echarts 中国地图,vue项目 echarts中国地图点击省份显示对应它的各个市,从零开始。
  12. java修改头像代码_用户修改头像功能
  13. linux查看weblogic安装路径,linux下weblogic安装
  14. 组策略怎么禁用计算机管理,如何打开管理员禁用的组策略?
  15. java实现牛牛游戏源代码
  16. 软件工程导论——软件维护
  17. 大数据平台下的数据治理
  18. 云服务器搭建减少物流信息成本,摩方谈物流运输:10大措施,控制物流运输成本!...
  19. 安装ideaIU-2022.1.4报错问题解决办法
  20. HKEY_CURRNT_USER和HKEY_LOCAL_MACHINE的区别

热门文章

  1. Working with Symbols (在Balsamiq Mockups中复用自定义控件和页面模板)
  2. jquery selector 基础
  3. 日本上市公司提供BTC, BCH, ETH担保的贷款
  4. 比特币现金一周年:BCH地位几何?
  5. 比特币现金BCH今日事件
  6. 三星6.0系统手机最简单激活XPOSED框架的教程
  7. HDU-1789-Doing Homework again
  8. 去除文件名中的'.'符号
  9. 礼让行人监控系统+政策助力,共建城市文明交通
  10. 工控安全要避开传统IT安全思路的几个“暗坑”