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 var变量隐式声明方法
Oct 19 Javascript
JavaScript Event学习第七章 事件属性
Feb 07 Javascript
js判断一个元素是否为另一个元素的子元素的代码
Mar 21 Javascript
JavaScript学习笔记之JS对象
Jan 22 Javascript
JavaScript动态修改背景颜色的方法
Apr 16 Javascript
JS实现的样式切换功能tableCSS实例
Dec 30 Javascript
Vue监听数据对象变化源码
Mar 09 Javascript
vue.js删除动态绑定的radio的指定项
Jun 02 Javascript
AngularJS中table表格基本操作示例
Oct 10 Javascript
ES6 javascript中Class类继承用法实例详解
Oct 30 Javascript
快速解决select2在bootstrap模态框中下拉框隐藏的问题
Aug 10 Javascript
js防抖函数和节流函数使用场景和实现区别示例分析
Apr 11 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
php 变量未定义等错误的解决方法
2011/01/12 PHP
ThinkPHP文件上传实例教程
2014/08/22 PHP
PHP框架Laravel插件Pagination实现自定义分页
2020/04/22 PHP
PHP常用文件操作函数和简单实例分析
2016/06/03 PHP
PHP实现驼峰样式字符串(首字母大写)转换成下划线样式字符串的方法示例
2017/08/10 PHP
针对thinkPHP5框架存储过程bug重写的存储过程扩展类完整实例
2018/06/16 PHP
php反射学习之不用new方法实例化类操作示例
2019/06/14 PHP
JXTree对象,读取外部xml文件数据,生成树的函数
2007/04/02 Javascript
jquery实现简单易懂的图片展示小例子
2013/11/21 Javascript
JavaScript中Number.NEGATIVE_INFINITY值的使用详解
2015/06/05 Javascript
Jquery 全选反选实例代码
2015/11/19 Javascript
Node.js连接postgreSQL并进行数据操作
2016/12/18 Javascript
JavaScript登录记住密码操作(超简单代码)
2017/03/22 Javascript
详解Nodejs之静态资源处理
2017/06/05 NodeJs
javascript标准库(js的标准内置对象)总结
2018/05/26 Javascript
使用pm2自动化部署node项目的方法步骤
2019/01/28 Javascript
js取0-9随机取4个数不重复的数字代码实例
2019/03/27 Javascript
vue实现新闻展示页的步骤详解
2019/04/11 Javascript
javascript+HTML5 canvas绘制时钟功能示例
2019/05/15 Javascript
Python统计文件中去重后uuid个数的方法
2015/07/30 Python
Win10下Python环境搭建与配置教程
2016/11/18 Python
python实现在cmd窗口显示彩色文字
2019/06/24 Python
解决python xx.py文件点击完之后一闪而过的问题
2019/06/24 Python
python threading和multiprocessing模块基本用法实例分析
2019/07/25 Python
执行Python程序时模块报错问题
2020/03/26 Python
Python Socket TCP双端聊天功能实现过程详解
2020/06/15 Python
通过cmd进入python的步骤
2020/06/16 Python
python实现数字炸弹游戏程序
2020/07/17 Python
中国最大的名表商城:万表网
2016/08/29 全球购物
为奢侈时尚带来了慈善元素:Olivela
2018/09/29 全球购物
高级Java程序员面试要点
2013/08/02 面试题
失恋33天观后感
2015/06/11 职场文书
三八妇女节致辞
2015/07/31 职场文书
css中z-index: 0和z-index: auto的区别
2021/08/23 HTML / CSS
使用logback实现按自己的需求打印日志到自定义的文件里
2021/08/30 Java/Android
Windows Server 2012 修改远程默认端口3389的方法
2022/04/28 Servers