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 相关文章推荐
JQuery AJAX实现目录浏览与编辑的代码
Oct 21 Javascript
Extjs学习笔记之三 extjs form更多的表单项
Jan 07 Javascript
jquery异步请求实例代码
Jun 21 Javascript
jquery 插件学习(一)
Aug 06 Javascript
JS实现的鼠标跟随代码(卡通手型点击效果)
Oct 26 Javascript
微信小程序 教程之WXML
Oct 18 Javascript
Vue2 使用 Echarts 创建图表实例代码
May 18 Javascript
node.js操作MongoDB的实例详解
Oct 11 Javascript
总结js中的一些兼容性易错的问题
Dec 18 Javascript
layui关闭层级、简单监听的实例
Sep 06 Javascript
JS数组方法shift()、unshift()用法实例分析
Jan 18 Javascript
vue-cil之axios的二次封装与proxy反向代理使用说明
Apr 07 Vue.js
基于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
PHP执行linux系统命令的常用函数使用说明
2010/04/27 PHP
PHP5.5和之前的版本empty函数的不同之处
2014/06/13 PHP
PhpStorm 如何优雅的调试Hyperf的方法步骤
2019/11/24 PHP
获取Javscript执行函数名称的方法
2006/12/22 Javascript
GreyBox技术总结(转)
2010/11/23 Javascript
兼容IE和FF的图片上传前预览js代码
2013/05/28 Javascript
Iframe 自动适应页面的高度示例代码
2014/02/26 Javascript
对之前写的jquery分页做下升级
2014/06/19 Javascript
详解JS函数重载
2014/12/04 Javascript
jQuery实用技巧必备(下)
2015/11/03 Javascript
Webwork 实现文件上传下载代码详解
2016/02/02 Javascript
解决jquery无法找到其他父级子集问题的方法
2016/05/10 Javascript
javascript之Array 数组对象详解
2016/06/07 Javascript
jquery插件autocomplete用法示例
2016/07/01 Javascript
node.js express安装及示例网站搭建方法(分享)
2016/08/22 Javascript
vue用addRoutes实现动态路由的示例
2017/09/15 Javascript
解决layui table表单提示数据接口请求异常的问题
2019/09/24 Javascript
[05:39]2014DOTA2国际邀请赛 DK晋级胜者组专访战队国士无双
2014/07/14 DOTA
Python单链表简单实现代码
2016/04/27 Python
老生常谈python之鸭子类和多态
2017/06/13 Python
Python实现的json文件读取及中文乱码显示问题解决方法
2018/08/06 Python
PyQt5的PyQtGraph实践系列3之实时数据更新绘制图形
2019/05/13 Python
Django中自定义admin Xadmin的实现代码
2019/08/09 Python
pytorch构建多模型实例
2020/01/15 Python
python求一个字符串的所有排列的实现方法
2020/02/04 Python
Python unittest生成测试报告过程解析
2020/09/08 Python
使paramiko库执行命令时在给定的时间强制退出功能的实现
2021/03/03 Python
深入浅出CSS3 background-clip,background-origin和border-image教程
2011/01/27 HTML / CSS
html5是什么_动力节点Java学院整理
2017/07/07 HTML / CSS
荷兰音乐会和音乐剧门票订购网站:Topticketshop
2019/08/27 全球购物
酷瑞网络科技面试题
2012/03/30 面试题
教师应聘个人求职信
2013/12/10 职场文书
中韩经贸翻译专业大学生职业生涯规划范文
2014/09/18 职场文书
任命书标准格式
2015/03/02 职场文书
感恩教师节主题班会
2015/08/12 职场文书
大学生奶茶店创业计划书
2019/06/25 职场文书