javascript中替换字符串的方法是replace函数,但在网站开发的过程中使用时却发现该函数只会替换第一个被匹配的字符,而不能像PHP的replace一样实现全局匹配并替换。

例:

var str = 'php! I love php';

str = str.replace('php', 'codetc');

alert(str);

上例输出的结果为: codetc! I love php

可以看到,replace函数只替换了第一个php,而后面的却没有被替换,这样的结果很多时候并不是我们想要的;那么我们如果实现replaceall全局匹配并替换呢?

其实 replace 本身也可以实现这种功能的,但需要通过借助 RegExp 对象实现。

RegExp 对象表示正则表达式,它是对字符串执行模式匹配的强大工具。

创建 RegExp 对象的语法:

new RegExp(pattern, attributes);

参数 pattern 是一个字符串,指定了正则表达式的模式或其他正则表达式。

参数 attributes 是一个可选的字符串,包含属性 "g"、"i" 和 "m",分别用于指定全局匹配、区分大小写的匹配和多行匹配。ECMAScript 标准化之前,不支持 m 属性。如果 pattern 是正则表达式,而不是字符串,则必须省略该参数。

这里我们只需要全局匹配替换指定的字符串的话,大可不必用到正则表达式,pattern的值直接指定目标字符串就行,但如果要实现正则匹配,那则需要把pattern指定为正则匹配规则,关于正则表达式的基本语法可以参考php正则表达式以及正则函数的使用

使用RegExp后,上面的例子可以变成:

var str = 'php! I love php';

str = str.replace(new RegExp('php','g'), 'codetc');

//str = str.replace(/php/g, 'codetc'); //效果相同

alert(str);

输出的结果为:codetc! I love codetc

这个结果已经达到我们的目标了,相当简单是吧,为了使用更方便,我们可以自己扩展js函数库,自创函数replaceall方法实现全局匹配并替换的功能。

String.prototype.replaceall=function(s1,s2){

return this.replace(new RegExp(s1,"gm"),s2);

}

最后,我们可以直接使用 str.replaceall('php', 'codetc')就可以了

php 全局匹配,JS使用RegExp对象实现replaceall全局匹配并替换相关推荐

  1. Js中RegExp对象

    Js中RegExp对象 RegExp对象表示正则表达式,是由普通字符和特殊字符也叫元字符或限定符组成的文字模板,用于对字符串执行模式匹配. 描述 创建一个RegExp对象通常有两种方式,一种是通过字面 ...

  2. JavaScript学习(十三)---RegExp对象

    目录 创建RegExp对象 1.使用RegExp的显式构造函数 2.使用RegExp的隐式构造函数,采用纯文本格式 RegExp对象的属性 静态属性: index属性: input属性: lastIn ...

  3. js进阶正则表达式10-分组-多行匹配-正则对象的属性(小括号作用:分组,将小括号里面的东西看成一个整体,因为量词只对前一个字符有效)(多行匹配:m)(属性使用:reg.global)...

    js进阶正则表达式10-分组-多行匹配-正则对象的属性(小括号作用:分组,将小括号里面的东西看成一个整体,因为量词只对前一个字符有效)(多行匹配:m)(属性使用:reg.global) 一.总结 1. ...

  4. JS_js正则匹配替换冒号,RegExp 对象

    RegExp 对象 正则表达式是描述字符模式的对象. 正则表达式用于对字符串模式匹配及检索替换,是对字符串执行模式匹配的强大工具. var patt=new RegExp(pattern,modifi ...

  5. Node.js:get/post请求、全局对象、工具模块

    一.GET/POST请求 在很多场景中,我们的服务器都需要跟用户的浏览器打交道,如表单提交.表单提交到服务器一般都使用 GET/POST 请求. 1.获取GET请求内容 由于GET请求直接被嵌入在路径 ...

  6. 【JS】javascript正则表达式的基本使用(JavaScript RegExp 对象)

    javascript正则表达式的基本使用(JavaScript RegExp 对象) 1. 正则表达式是什么? 2. 基本使用语法 2.1 正则表达式思维导图 2.2 定义正则表达式 2.2.1 普通 ...

  7. JavaScript 正则表达式(RegExp对象、属性、方法、String支持)

    内容来源:JavaScript RegExp 对象参考手册    http://www.w3school.com.cn/js/jsref_obj_regexp.asp RegExp 对象 RegExp ...

  8. Js中String对象

    Js中String对象 String全局对象是一个用于字符串或一个字符序列的构造函数. 描述 创建一个字符串可以通过字面量的方式,通过字面量创建的字符串变量在调用方法的时候能够自动转化为临时的包装对象 ...

  9. JavaScript标准库系列——RegExp对象(三)

    目录 导语 1.理解正则表达式 2.模式的规则 3.字符串和正则实例的属性和方法 4.检索实例 5. 小结 导语 正则表达式是处理字符串的一门艺术手法,应用场景经常出现在表单验证部分: JavaScr ...

最新文章

  1. Flask rst 文档转换为html格式文件
  2. 程序员的抱枕也太高大上了吧! | 每日趣闻
  3. 微信小游戏 demo 飞机大战 代码分析(四)(enemy.js, bullet.js, index.js)
  4. 针对《等保2.0》要求的云上最佳实践——网络安全篇
  5. ArrayList单列集合的简单使用常见方法
  6. 大数据学习笔记48:Flume Sources(Flume源)
  7. dataframe修改数据_利用Python进行数据分析(语法篇)
  8. 【算法】剑指 Offer 53 - II. 0~n-1中缺失的数字
  9. css hack的使用
  10. 团队开发——用户需求报告
  11. Windows Server 2003下ASP.NET无法识别IE11的解决方法【转】
  12. PHP中的数组(排序)
  13. Github 爆火!程序员疯抢的 Java 面试宝典(PDF 版)限时开源
  14. GDB文件地理数据库和MDB个人地理数据库
  15. html自动弹图片,JS自动适应的图片弹窗实例
  16. KNN代码学习:将iris.csv处理成bunch格式
  17. Python 第三方模块 绘图 Matplotlib模块 绘图3(极坐标图,热力图,箱线图)
  18. 阿里和微博的异地多活方案
  19. SpringBoot/Spring Cloud/Docker
  20. hypermesh和lsdyna联合仿真计算某汽车座椅进行的头冲吸能实验

热门文章

  1. “数”驰天下,华为云DRS 高效支撑T3出行平稳迁移
  2. 从零开始学python | 使用Python映射,过滤和缩减函数:所有您需要知道的
  3. 如何处理分析Flink作业反压的问题?
  4. 华为云应用服务网格最佳实践之从Spring Cloud 到 Istio
  5. 再拔头筹,FusionInsight为华为云大数据打造硬实力
  6. 【华为云技术分享】一文掌握5种常用的机器学习模型及其优缺点
  7. 【华为云技术分享】如何使用pyCharm与ModelArts公有云服务联动开发,快速且充分地利用云端GPU计算资源
  8. 【华为云技术分享】小熊派华为物联网操作系统LiteOS裸机驱动移植02-LCD驱动移植及使用
  9. 【Python成长之路】装逼的一行代码:快速共享文件【华为云分享】
  10. 无码系列-2-代码架构空想