来一轮带注释的demo,彻底搞懂javascript中的replace函数
javascript这门语言一直就像一位带着面纱的美女,总是看不清,摸不透,一直专注服务器端,也从来没有特别重视过,直到最近几年,javascript越来越重要,越来越通用。最近和前端走的比较近,借此机会,好好巩固一下相关知识点。
1.初识replace
在js中有两个replace函数 一个是location.replace(url) 跳转到一个新的url
一个string.replace("xx","yy") 替换字符串 返回一个新的字符串,该方法并不改变字符串本身
location.replace(url) 无痕跳转(将当前链接导航到一个新的url 并不保存历史记录)
与之相对的是location.href="url" 有痕跳转(将当前链接导航到一个新的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函数!
啥也不说了,大大地点赞吧!!
来一轮带注释的demo,彻底搞懂javascript中的replace函数相关推荐
- 彻底搞懂javascript中的replace函数
javascript这门语言一直就像一位带着面纱的美女,总是看不清,摸不透,一直专注服务器端,也从来没有特别重视过,直到最近几年,javascript越来越重要,越来越通用.最近和前端走的比较近,借此 ...
- 针对还没搞懂javascript中this关键字的同学
本篇文章主要针对搞不清this指向的的同学们!不定期更新文章都是我学习过程中积累下的经验,还请大家多多关注我的文章以帮助更多的同学,不对的地方还望留言支持改进! 首先,必须搞清楚在JS里面,函数的几种 ...
- $.ligerdialog.open中确定按钮加事件_彻底搞懂JavaScript中的this指向问题
JavaScript中的this是让很多开发者头疼的地方,而this关键字又是一个非常重要的语法点.毫不夸张地说,不理解它的含义,大部分开发任务都无法完成. 想要理解this,你可以先记住以下两点: ...
- proto文件支持继承吗_搞懂 Javascript中this 指向及继承原理
在理解继承之前,需要知道 js 的三个东西: 什么是 JS 原型链 this 的值到底是什么 JS 的new 到底是干什么的 一.什么是 JS 原型链? 我们知道 JS 有对象,比如 var obj ...
- 彻底搞懂javascript中的match, exec的区别
在工作中经常发现一些同学把这两个方法搞混,以致把自己弄的很郁闷.所以我和大家一起来探讨一下这两个方法的奥妙之处吧. 我们分以下几点来讲解: 相同点: 1.两个方法都是查找符合条件的匹配项,并以数组形式 ...
- 搞懂JavaScript中的进制与进制转换
文章目录 进制介绍 进制转换 parseInt(str, radix) Number() +(一元运算符) Number.prototype.toString(radix) 自定义转换 十进制与十六进 ...
- java线程间通信:一个小Demo完全搞懂
版权声明:本文出自汪磊的博客,转载请务必注明出处. Java线程系列文章只是自己知识的总结梳理,都是最基础的玩意,已经掌握熟练的可以绕过. 一.从一个小Demo说起 上篇我们聊到了Java多线程的同步 ...
- 五个小例子教你搞懂 JavaScript 作用域问题
原文:五个小例子教你搞懂 JavaScript 作用域问题 众所周知,JavaScript 的作用域和其他传统语言(类C)差别比较大,掌握并熟练运用JavaScript 的作用域知识,不仅有利于我们阅 ...
- 彻底搞懂 JS 中 this 机制
彻底搞懂 JS 中 this 机制 摘要:本文属于原创,欢迎转载,转载请保留出处:https://github.com/jasonGeng88/blog 目录 this 是什么 this 的四种绑定规 ...
最新文章
- jquery 选择时间(小时)区间(四)
- linux企业常用命令必之必会二
- 【Android 安全】DEX 加密 ( 阶段总结 | 主应用 | 代理 Application | Java 工具 | 代码示例 ) ★
- 关于JS的循环和函数,由入门到放弃
- 通过java查询数据库表结构
- 按汉字首字母排序(sql语句)
- RTX3090深度学习环境配置(PyTorch1.8)
- linux 调优篇 :硬件调优(BIOS配置)* 壹
- 关于mysql启动错误
- java图片预览上传_Java实现图片上传预览 (使用ajax提交)
- Python 装饰器初探
- SIP.conf的常用参数配置
- 关于管理,这5大误区你越早知道越好
- java deque.pop_Java - dequeue的介紹及用法
- linux 开机文件系统报错.error 无法挂载
- 添加 identity impersonate=true userName=username password=password/,解决问题!
- java面试宝典第五版,《程序员面试宝典(第5版)》和《Java程序员面试宝典(第4版)》的一些看法......
- 【大一期末项目】qqclienkey利用:基于qqclientkey的纯c++项目实践
- PHP多国语言开发:CodeIgniter 2PHP框架中的多国语言,语言包(i18n)库
- xp每天定时关机命令