// 每日前端夜话 第418篇// 正文共:700 字// 预计阅读时间:5 分钟

替换字符串中的文本是 JavaScript 开发中的常见任务。本文研究几种用 replace 和正则表达式替换文本的方法。

替换单个字串

通常 JavaScript 的 String replace() 函数只会替换它在字符串中找到的第一个匹配的子符:

const myMessage = 'this is the sentence to end all sentences';const newMessage = myMessage.replace('sentence', 'message');console.log(newMessage); // this is the message to end all sentences

在这个例子中,仅替换了第一个 sentence 字串。

替换多个子串

如果希望 JavaScript 能够替换所有子串,必须通过 /g 运算符使用正则表达式:

const myMessage = 'this is the sentence to end all sentences';const newMessage = myMessage.replace(/sentence/g, 'message');console.log(newMessage); // this is the message to end all messages

这一次次两个子串都会被替换。

除了使用内联 /g 之外,还可以使用 RegExp 对象的构造函数:

const myMessage = 'this is the sentence to end all sentences';const newMessage = myMessage.replace(new RegExp('sentence', 'g'), 'message');console.log(newMessage); // this is the message to end all messages```

替换特殊字符

要替换特殊字符,例如 -/\^$*+?.()|[]{}),需要使用反斜杠对其转义。

如果给定字符串 this\-is\-my\-url,要求把所有转义的减号( \-)替换为未转义的减号(-)。

可以用 replace() 做到:

const myUrl = 'this\-is\-my\-url';const newUrl = myMessage.replace(/\\-/g, '-');console.log(newUrl); // this-is-my-url

或者用new Regexp()

const myUrl = 'this\-is\-my\-url';const newUrl = myUrl.replace(new RegExp('\-', 'g'), '-');console.log(newUrl); // this-is-my-url

在第二个例子中不必用反斜杠来转义反斜杠。

你还知道哪些方法,请留言告诉大家。



精彩文章回顾,点击直达

转一转赞一赞看一看

bat替换文件中的字符串_JavaScript 中替换字符串的几种方法相关推荐

  1. java7 javascript引擎_Java7中脚本引擎的一般用法,共三种方法获得JavaScript引擎:名称、文件扩展名、MIME类型 | 学步园...

    package com.sino.java7; import javax.script.ScriptEngine; import javax.script.ScriptEngineManager; i ...

  2. 多个html如何套用套一个头部,Vue.js项目中管理每个页面的头部标签的两种方法...

    在 Vue SPA 应用中,如果想要修改 HTML 的头部标签,如页面的 title ,我们只能去修改 index.html 模板文件,但是这个是全局的修改,如何为每个页面都设置不一样的 title ...

  3. python中none算变量吗_在python中对变量判断是否为None的三种方法总结

    三种主要的写法有: 第一种:if X is None; 第二种:if not X: 当X为None,  False, 空字符串"", 0, 空列表[], 空字典{}, 空元组()这 ...

  4. java整型转换为数组_基于java中byte数组与int类型的转换(两种方法)

    java中byte数组与int类型的转换,在网络编程中这个算法是最基本的算法,我们都知道,在socket传输中,发送.者接收的数据都是 byte数组,但是int类型是4个byte组成的,如何把一个整形 ...

  5. ASP.NET中WEB上弹出消息框的N种方法(为了以后方便,转了很多网友的文章!希望不会介意)...

    ASP.NET中WEB上弹出消息框的N种方法 第一个确定之后跳转到另一页面,第二个确定之后返回前一页 Response.Write("<script langage='javascri ...

  6. 解决VMware中虚拟机(centos7)无法上网的一种方法

    解决VMware中虚拟机(centos7)无法上网的一种方法 参考文章: (1)解决VMware中虚拟机(centos7)无法上网的一种方法 (2)https://www.cnblogs.com/cu ...

  7. xlsx怎么设置行高列宽_Excel2016中调整行高和列宽的两种方法

    在报表的编辑过程中经常需要调整特定行的行高或列的列宽,例如当单元格中输入的数据超出该单元格宽度时,需要调整单元格的列宽.本文图文讲述了Excel2016中调整行高和列宽的两种方法. 方法一:使用命令调 ...

  8. java中给对象的List集合去重的几种方法(Lambda)

    java中给对象的List集合去重的几种方法 前言 一.lambda表达式的去重方式 二.Stream API中的collect去重方法 三.Stream API 中的distinct方法去重 前言 ...

  9. Python中记住过去(模型状态)的五种方法

    在Python中记住过去(模型状态)的五种方法 从封闭函数和迭代器到状态机Python库 有人说... "那些不能记住过去的人,注定要重复它".G. Santayana, 1905 ...

  10. js中判断文本框是否为空的两种方法

    js中判断文本框是否为空的两种方法 //用户名非空验证 function checkUserName(){ var name = document.myform.txtUser; //在这里我认为: ...

最新文章

  1. 简单介绍python的input,print,eval函数
  2. html中怎么实现广告自动出来又自动隐藏?,基于jquery实现的定时显示与隐藏div广告的实现代码...
  3. 利用Java自带的MD5加密java.security.MessageDigest;
  4. Tomcat出现端口被占用Port 8080 required by Tomcat v9.0 Server at localhost is already in use.
  5. CentOS6.7 时间同步
  6. 实际编程题----CT扫描
  7. 发票管理软件_财务人员都在用的这款发票管理软件,真的值得购买么?
  8. redis常用命令(基础篇)
  9. Vue.js(2.x)之插值
  10. 让Node.js在Azure上运行-3
  11. java 代码段 执行超时 抛异常_深入理解Java线程状态
  12. SQL查询语句的基本使用方法
  13. FitStar Yoga-健身类App原型分享
  14. 计算机的内存时序参数,电脑内存条很重要的一个参数:时序
  15. 【转】欧姆龙FINS通讯命令实例详解
  16. 基于Retrofit框架的金山API翻译功能案例
  17. 3D模型欣赏:《magician》次时代 美女 精灵
  18. 19.JavaScript学习笔记——数组
  19. 京东云修改Hostname,Centos7修改Hostname
  20. java中的控制器_SpringMVC基础(一)_控制器

热门文章

  1. vscode 翻译_前端新手 VSCode 入门指南
  2. Php获取分类等级,PHP获取无限分类的完整等级列表
  3. mysql多源复制 知乎_技术分享 | MySQL 多源复制场景分析
  4. PL-SVO: Semi-Direct Monocular Visual Odometry by Combining Points and Line Segments
  5. Python邮件操作实例:发个邮件用Python实现远程自动关机
  6. ~~单链表(数据结构)
  7. 百度2017春招笔试
  8. java lambda表达式学习笔记
  9. POJ2155 Matrix二维线段树经典题
  10. Altium AD20原理图从库中更新变动,库中模型修改后同步到原理图中