javascript中的replace函数(带注释demo)


Posted in Javascript onJanuary 07, 2018

javascript这门语言一直就像一位带着面纱的美女,总是看不清,摸不透,一直专注服务器端,也从来没有特别重视过,直到最近几年,javascript越来越重要,越来越通用。最近和前端走的比较近,借此机会,好好巩固一下相关知识点。

1.初识replace

在js中有两个replace函数 一个是location.replace(url) 跳转到一个新的url

一个string.replace("xx","yy") 替换字符串 返回一个新的字符串,该方法并不改变字符串本身

location.replace(url) 无痕跳转(将当前链接导航到一个新的url 并不保存历史记录)
与之相对的是location.href="url" rel="external nofollow" 有痕跳转(将当前链接导航到一个新的url 且保存历史记录) 这个没有比较清晰

string.replace函数 很多初学者,会认为这个跟C#中的Replace一样,但并不相同,js中replace更灵活。
最基本的用法 就是简单替换字符串。来看一个例子:

var str = "abcd-abcd-abcd";
var result = str.replace("a", "");
console.log(result);
//输出 bcd-abcd-abcd
//当第一个参数是一个简单字符串时,仅替换第一个匹配项

2.走进replace之正则表达式

参数一:正则表达式对象或字面量(支持gi模式) g全局匹配 i忽略大小写

参数二:要替换的字符串或一个function

可以使用正则表达式的相关引用

如果是function,则替换为function的返回值

此function的参数:

match 匹配的子串。(对应于上述的$&。)

p1,p2, ... 假如replace()方法的第一个参数是一个RegExp 对象,则代表第n个括号匹配的字符串。(对应于上述的$1,$2等。)

offset 匹配到的子字符串在原字符串中的偏移量。(比如,如果原字符串是“abcd”,匹配到的子字符串是“bc”,那么这个参数将是1)

string 被匹配的原字符串。

正则表达的引用

$$ 插入一个 "$"。
$& 插入匹配的子串。
$` 插入当前匹配的子串左边的内容。
$' 插入当前匹配的子串右边的内容。
$n 假如第一个参数是 RegExp对象,并且 n 是个小于100的非负整数,那么插入第 n 个括号匹配的字符串。

 3.来一轮带注释的demo,彻底搞懂javascript中的replace函数:

全局匹配:

var str = "abcd-abcd-abcd";
var result = str.replace(/a/g, "e");
console.log(result);
//输出 ebcd-ebcd-ebcd
//g全局匹配 所有a字符串都将被替换

忽略大小写匹配:

var str = "abcd-abcd-abcd";
var result = str.replace(/A/i, "e");
console.log(result);
// 输出 ebcd-abcd-abcd
// 忽略大小写的匹配 但没有进行全局匹配 所以只替换第一个a

忽略大小写且全局匹配:

var str = "abcd-abcd-abcd";
var result = str.replace(/A/gi, "e");
console.log(result);
// 输出 ebcd-ebcd-ebcd
// 忽略大小写并全局匹配 所有a都被替换

使用function作为第二参数:

var str = "abcd-abcd-1234";
var result = str.replace(/([a-z]*)-([a-z]*)/gi, function(match,p1,p2,offset,str){
  console.log(match);  //abcd-abcd 匹配的内容
  console.log(p1);  //第一个括号中匹配的内容
  console.log(p2);  //第二个括号匹配的内容
  console.log(offset);//0 匹配到的字符串的索引(偏移量) 
  console.log(str);  //原始字符串
  return [p1,p2].join("+");
});
console.log(result);
// 输出 abcd+abcd+1234
// 原字符串中 abcd-abcd 被匹配后 被替换为function返回的内容

在参数中引用正则表达式匹配项:

var str = "a b";
var result = str.replace(/(\w+)\s(\w+)/gi, "$2 $1");
console.log(result); 
//输出 b a 
// 这里的$1 $2分别引用正则表达式中第一个喝第二个括号匹配的内容

在参数中引用匹配项左侧内容:

var str = 'abc';
  var result = str.replace(/b/g, "$`"); //$`代表匹配字符的左侧内容
  console.log(result);
  //输出: aac

在参数中引用匹配项右侧内容:

var str = 'abc';
  var result = str.replace(/b/g, "$'"); //$'代表匹配字符的右侧内容
  console.log(result);
  //输出: acc

使用正则表达式对象:

var str = "a b";
 var reg = new RegExp(/(\w+)\s(\w+)/, "gi"); //也可以使用正则表示对象来最为参数
 var result = str.replace(reg, "$2 $1");
 console.log(result); //输出 b a

有了这些例子 加上开头的名词解释,相信你已经彻底搞懂了javascript中的replace函数!

总结

以上所述是小编给大家介绍的javascript中的replace函数(带注释demo),希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!

Javascript 相关文章推荐
JavaScript语言中的Literal Syntax特性分析
Mar 08 Javascript
javascript右下角弹层及自动隐藏(自己编写)
Nov 20 Javascript
js与jquery获取父级元素,子级元素,兄弟元素的实现方法
Jan 09 Javascript
解析JavaScript的ES6版本中的解构赋值
Jul 28 Javascript
Bootstrap模态框调用功能实现方法
Sep 19 Javascript
react.js 翻页插件实例代码
Jan 19 Javascript
jQuery自定义元素右键点击事件(实现案例)
Apr 28 jQuery
JavaScript创建对象的七种方式(推荐)
Jun 26 Javascript
canvas+gif.js打造自己的数字雨头像的示例代码
Oct 26 Javascript
Vue.js表单标签中的单选按钮、复选按钮和下拉列表的取值问题
Nov 22 Javascript
angular组件间通讯的实现方法示例
May 07 Javascript
js实现简单音乐播放器
Jun 30 Javascript
基于JavaScript实现简单的音频播放功能
Jan 07 #Javascript
js实现复制功能(多种方法集合)
Jan 06 #Javascript
tangram.js库实现js类的方式实例分析
Jan 06 #Javascript
JavaScript寄生组合式继承实例详解
Jan 06 #Javascript
基于jquery trigger函数无法触发a标签的两种解决方法
Jan 06 #jQuery
JS实现非首屏图片延迟加载的示例
Jan 06 #Javascript
jQuery中库的引用方法
Jan 06 #jQuery
You might like
日本十大科幻动漫 宇宙骑士垫底,第一已成经典
2020/03/04 日漫
PHP curl模拟登录带验证码的网站
2015/11/30 PHP
PHP使用strtotime获取上个月、下个月、本月的日期
2015/12/30 PHP
弹出模态框modal的实现方法及实例
2017/09/19 PHP
PHP实现的猴王算法(猴子选大王)示例
2018/04/30 PHP
javascript 传统事件模型构造的事件监听器实现代码
2010/05/31 Javascript
JavaScript 匿名函数(anonymous function)与闭包(closure)
2011/10/04 Javascript
Javascript的常规数组和关联数组对比小结
2012/05/24 Javascript
jQuery之自动完成组件的深入解析
2013/06/19 Javascript
jquery中的on方法使用介绍
2013/12/29 Javascript
JavaScript运行机制之事件循环(Event Loop)详解
2014/10/10 Javascript
jQuery选择器源码解读(三):tokenize方法
2015/03/31 Javascript
JS中常用的输出方式(五种)
2016/06/12 Javascript
React组件的三种写法总结
2017/01/12 Javascript
详解React Native 采用Fetch方式发送跨域POST请求
2017/11/15 Javascript
详解性能更优越的小程序图片懒加载方式
2018/07/18 Javascript
微信小程序 this.triggerEvent()的具体使用
2019/12/10 Javascript
javascript canvas检测小球碰撞
2020/04/17 Javascript
jQuery 移除事件的方法
2020/06/20 jQuery
在Linux系统上安装Python的Scrapy框架的教程
2015/06/11 Python
numpy.transpose()实现数组的转置例子
2019/12/02 Python
Python如何操作docker redis过程解析
2020/08/10 Python
Django路由层URLconf作用及原理解析
2020/09/24 Python
Python在centos7.6上安装python3.9的详细教程(默认python版本为2.7.5)
2020/10/15 Python
css3实现的下拉菜单效果示例
2014/01/22 HTML / CSS
苏格兰销售女装、男装和童装的连锁店:M&Co
2018/03/16 全球购物
Windows和Linux动态库应用异同
2016/04/17 面试题
测控技术与通信工程毕业生自荐信范文
2013/12/28 职场文书
银行开业庆典方案
2014/02/06 职场文书
《骑牛比赛》教后反思
2014/04/22 职场文书
党员干部反四风对照检查材料思想汇报
2014/09/14 职场文书
2014企业领导班子四风对照检查材料思想汇报
2014/09/17 职场文书
实验室安全管理制度
2015/08/05 职场文书
python基于turtle绘制几何图形
2021/06/15 Python
浅谈mysql增加索引不生效的几种情况
2021/06/23 MySQL
详解SQL的窗口函数
2022/04/21 Oracle