js replace 与replaceall实例用法详解


Posted in Javascript onAugust 03, 2013

stringObj.replace(rgExp, replaceText)

参数

stringObj

必选项。要执行该替换的 String 对象或字符串文字。该字符串不会被 replace 方法修改。

rgExp

必选项。为包含正则表达式模式或可用标志的正则表达式对象。也可以是 String 对象或文字。如果 rgExp 不是正则表达式对象,它将被转换为字符串,并进行精确的查找;不要尝试将字符串转化为正则表达式。

replaceText

必选项。是一个String 对象或字符串文字,对于stringObj 中每个匹配 rgExp 中的位置都用该对象所包含的文字加以替换。在 Jscript 5.5 或更新版本中,replaceText 参数也可以是返回替换文本的函数。

说明

replace 方法的结果是一个完成了指定替换的 stringObj 对象的复制。

下面任意的匹配变量都能用来识别最新的匹配以及找出匹配的字符串。在需要动态决定替换字符串的文本替换中可以使用匹配变量。

字符 含义

$$ $ (JScript 5.5 或更新版本)

$& 指定与整个模式匹配的 stringObj 的部分。 (JScript 5.5 或更新版本)

$` 指定由 $& 描述的匹配之前的 stringObj 部分。 (JScript 5.5 或更新版本)

$' 指定由 $& 描述的匹配之后的 stringObj 部分。 (JScript 5.5 或更新版本)

$n 捕获的第 n 个子匹配,此处 n 为从1到9的十进制一位数。 (JScript 5.5 或更新版本)

$nn 捕获的第 nn 个子匹配,此处 nn 为从01到99的十进制两位数。 (JScript 5.5 或更新版本)

如果 replaceText 为函数,对于每一个匹配的子字符串,调用该函数时带有下面的 m+3 个参数,此处 m 是在 rgExp 中捕获的左括弧的个数。第一个参数是匹配的子字符串。接下来的 m 个参数是查找中捕获的全部结果。第 m+2 个参数是在 stringObj 中匹配出现的偏移量,而第 m+3 个参数为 stringObj。结果为将每一匹配的子字符串替换为函数调用的相应返回值的字符串值。

Replace 方法更新全局 RegExp 对象的属性。

示例

下面的示例演示了 replace 方法将第一次出现的单词 "The" 替换为单词 "A" 的用法。

function ReplaceDemo(){

var r, re; // 声明变量。

var ss = "The man hit the ball with the bat.n";

ss += "while the fielder caught the ball with the glove.";

re = /The/g; // 创建正则表达式模式。

r = ss.replace(re, "A"); // 用 "A" 替换 "The"。

return(r); // 返回替换后的字符串。

}

另外, replace 方法也可以替换模式中的子表达式。 下面的范例演示了交换字符串中的每一对单词:

function ReplaceDemo(){

var r, re; // 声明变量。

var ss = "The rain in Spain falls mainly in the plain.";

re = /(S+)(s+)(S+)/g; // 创建正则表达式模式。

r = ss.replace(re, "$3$2$1"); // 交换每一对单词。

return(r); // 返回结果字符串。

}

下面的示例(在 JScript 5.5 及更新版本中执行)执行的是从华氏到摄氏的转换,它演示了使用函数作为 replaceText。要想知道该函数是如何工作的,传递一个包含数值的字符串,数值后要紧跟 "F" (例如 "Water boils at 212")。
function f2c(s) {
var test = /(d+(.d*)?)Fb/g; // 初始化模式。

return(s.replace

(test,

function($0,$1,$2) {

return((($1-32) * 5/9) + "C");

}

)

);

}

document.write(f2c("Water freezes at 32F and boils at 212F."));

js居然不提供replaceAll方法,用for循环又有效率问题,给你一个正则表达式的解决方案

js 代码

String.prototype.replaceAll = function(s1,s2){
return this.replace(new RegExp(s1,"gm"),s2);

}

方法: string.replace(new RegExp(oldString,"gm"),newString))

gm g=global, m=multiLine , 大致上方法就是这样的,可以实现替换全部指定字串

另一个简单的验证JS的方法:

在浏览器地址栏输入

javascript:alert("abcabcabc".replace(new RegExp("a","gm"),"ad"))

这样比较省事 ;) ,不知道多行的会不会很方便

orgStr.replace(new RegExp(findStr, 'g'), replaceStr)

应该就可以替换所有的了

如果不用正则表达式

orgStr.replace(findStr, replaceStr)只能替换第一个

Javascript 相关文章推荐
javascript获得CheckBoxList选中的数量
Oct 27 Javascript
JavaScript解析URL参数示例代码
Aug 12 Javascript
jQuery使用after()方法在元素后面添加多项内容的方法
Mar 26 Javascript
javascript数组排序汇总
Jul 07 Javascript
整理一下常见的IE错误
Nov 18 Javascript
利用iscroll4实现轮播图效果实例代码
Jan 11 Javascript
Grunt针对静态文件的压缩,版本控制打包的实例讲解
Sep 29 Javascript
响应式框架Bootstrap栅格系统的实例
Dec 19 Javascript
webpack 插件html-webpack-plugin的具体使用
Apr 09 Javascript
Vue验证码60秒倒计时功能简单实例代码
Jun 22 Javascript
关于在LayUI中使用AJAX提交巨坑记录
Oct 25 Javascript
JS的时间格式化和时间戳转换函数示例详解
Jul 27 Javascript
jquery动态加载js三种方法实例
Aug 03 #Javascript
js innerHTML 改变div内容的方法
Aug 03 #Javascript
JS代码判断IE6,IE7,IE8,IE9的函数代码
Aug 02 #Javascript
JS自定义功能函数实现动态添加网址参数修改网址参数值
Aug 02 #Javascript
jQuery function的正确书写方法
Aug 02 #Javascript
jquery 层次选择器siblings与nextAll的区别介绍
Aug 02 #Javascript
js 固定悬浮效果实现思路代码
Aug 02 #Javascript
You might like
php与Mysql的一些简单的操作
2015/02/26 PHP
基于laravel制作APP接口(API)
2016/03/15 PHP
PHP利用Mysql锁解决高并发的方法
2018/09/04 PHP
Jquery Ajax学习实例7 Ajax所有过程事件分析示例
2010/03/23 Javascript
jquery 单击li防止重复加载的实现代码
2010/12/24 Javascript
js静态方法与实例方法分析
2011/07/04 Javascript
浅谈Javascript鼠标和滚轮事件
2012/06/27 Javascript
javascript 手动给表增加数据的小例子
2013/07/10 Javascript
深入理解JavaScript系列(46):代码复用模式(推荐篇)详解
2015/03/04 Javascript
Javascript中浏览器窗口的基本操作总结
2016/08/18 Javascript
js滚轮事件兼容性问题需要注意哪些
2016/11/15 Javascript
JS实现JSON.stringify的实例代码讲解
2017/02/07 Javascript
详解Sea.js中Module.exports和exports的区别
2017/02/12 Javascript
js 实现获取name 相同的页面元素并循环遍历的方法
2017/02/14 Javascript
BootStrap中jQuery插件Carousel实现轮播广告效果
2017/03/27 jQuery
vue修改vue项目运行端口号的方法
2017/08/04 Javascript
js时间转换毫秒的实例代码
2019/08/21 Javascript
在node环境下parse Smarty模板的使用示例代码
2019/11/15 Javascript
Vuex的各个模块封装的实现
2020/06/05 Javascript
[51:53]完美世界DOTA2联赛循环赛 LBZS vs DM BO2第二场 11.01
2020/11/02 DOTA
python中类和实例如何绑定属性与方法示例详解
2017/08/18 Python
python求最大公约数和最小公倍数的简单方法
2020/02/13 Python
新建文件时Pycharm中自动设置头部模板信息的方法
2020/04/17 Python
Anaconda+vscode+pytorch环境搭建过程详解
2020/05/25 Python
python中return如何写
2020/06/18 Python
使用Python判断一个文件是否被占用的方法教程
2020/12/16 Python
CSS3实现图片抽屉式效果的示例代码
2019/11/06 HTML / CSS
介绍一下.net和Java的特点和区别
2012/09/26 面试题
大一自我鉴定范文
2013/10/04 职场文书
合同专员岗位职责
2013/12/18 职场文书
理工学院学生自我鉴定
2014/02/23 职场文书
食品采购员岗位职责
2014/04/14 职场文书
标准离婚协议书(2014版)
2014/10/05 职场文书
2014年共青团工作总结
2014/12/10 职场文书
PyTorch的Debug指南
2021/05/07 Python
MySQL 时间类型的选择
2021/06/05 MySQL