JS的replace方法介绍


Posted in Javascript onOctober 20, 2012

该函数的第一个参数是匹配模式的字符串。接下来的参数 是与模式中的子表达式匹配的字符串,可以有 0 个或多个这样的参数。接下来的参数是一个整数,声明了匹配在 stringObject 中出现的位置。最后一个参数是 stringObject 本身。
下文展示了几种javascript正则表示式的repalce方式,有些方式我们很少在别的地方看到,如第二种和第三方中方法。

//下面的例子用来获取url的两个参数,并返回urlRewrite之前的真实Url 
var reg=new RegExp("(https://3water.com/BookReader/)(\\d+),(\\d+).aspx","gmi"); 
var url="https://3water.com/BookReader/1017141,20361055.aspx"; 
//方式一,最简单常用的方式 
var rep=url.replace(reg,"$1ShowBook.aspx?bookId=$2&chapterId=$3"); 
alert(rep); 
//方式二 ,采用固定参数的回调函数 
var rep2=url.replace(reg,function(m,p1,p2,p3){return p1+"ShowBook.aspx?bookId="+p3+"&chapterId="+p3}); 
alert(rep2); 
//方式三,采用非固定参数的回调函数 
var rep3=url.replace(reg,function(){var args=arguments; return args[1]+"ShowBook.aspx?bookId="+args[2]+"&chapterId="+args[3];}); 
alert(rep3); 
//方法四 
//方式四和方法三很类似, 除了返回替换后的字符串外,还可以单独获取参数 
var bookId; 
var chapterId; 
function capText() 
{ 
var args=arguments; 
bookId=args[2]; 
chapterId=args[3]; 
return args[1]+"ShowBook.aspx?bookId="+args[2]+"&chapterId="+args[3]; 
} 
var rep4=url.replace(reg,capText); 
alert(rep4); 
alert(bookId); 
alert(chapterId); 
//除了使用replace方法获取正则表示式的分组外,还可以使用test ,exec方法获取分组,只是手法有所不同而已 
var reg2=new RegExp("(https://3water.com/BookReader/)(\\d+),(\\d+).aspx","gmi"); 
var m=reg2.exec("https://3water.com/BookReader/1017141,20361055.aspx"); 
var s=""; 
//获取所有的分组 
for (i = 0; i < m.length; i++) { 
s = s + m[i] + "\n"; 
} 
alert(s); 
bookId=m[2]; 
chapterId=m[3]; 
alert(bookId); 
alert(chapterId); 
//使用test方法获取分组 
var reg3=new RegExp("(https://3water.com/BookReader/)(\\d+),(\\d+).aspx","gmi"); 
reg3.test("https://3water.com/BookReader/1017141,20361055.aspx"); 
//获取三个分组 
alert(RegExp.$1); 
alert(RegExp.$2); 
alert(RegExp.$3); 
var str="www.baidu.com"; 
//str.format("好","q") 
str.replace(new RegExp("(\\.)(bai)du","g"),function(){ 
for(var i=0;i<arguments.length;i++) 
{ 
document.write(arguments[i]+"<br/>"); 
} 
document.write("-------------------------------------------------<br/>"); 
}); 
两个例子(证明,replace传入正则参数和字符传参数结果不同): 
alert("123".replace("1",function(){var un;return un;})); //弹出undefined23 
alert("123".replace(new RegExp("1"),function(){var un;return un;})); //弹出23
Javascript 相关文章推荐
img的onload的另类用法
Jan 10 Javascript
jquery得到iframe src属性值的方法
Sep 25 Javascript
jQuery 移动端artEditor富文本编辑器
Jan 11 Javascript
jQuery实现鼠标跟随提示层效果代码(可显示文本,Div,Table,Html等)
Apr 18 Javascript
jQuery实现点击任意位置弹出层外关闭弹出层效果
Oct 19 Javascript
详解使用vue-router进行页面切换时滚动条位置与滚动监听事件
Mar 08 Javascript
Bootstrap标签页(Tab)插件切换echarts不显示问题的解决
Jul 13 Javascript
JavaScript实现简单的隐藏式侧边栏功能示例
Aug 31 Javascript
vue实现条件判断动态绑定样式的方法
Sep 29 Javascript
vue+element项目中过滤输入框特殊字符小结
Aug 07 Javascript
微信小程序 子级页面返回父级并把子级参数带回父级实现方法
Aug 22 Javascript
vue-cli脚手架的.babelrc文件用法说明
Sep 11 Javascript
Lazy Load 延迟加载图片的jQuery插件中文使用文档
Oct 18 #Javascript
JavaScript 用cloneNode方法克隆节点的代码
Oct 15 #Javascript
基于JQuery的模拟苹果桌面Dock效果(稳定版)
Oct 15 #Javascript
基于JQuery模仿苹果桌面的Dock效果(初级版)
Oct 15 #Javascript
JS自动缩小超出大小的图片
Oct 12 #Javascript
文本框input聚焦失焦样式实现代码
Oct 12 #Javascript
poshytip 基于jquery的 插件 主要用于显示微博人的图像和鼠标提示等
Oct 12 #Javascript
You might like
php Rename 更改文件、文件夹名称
2011/05/24 PHP
解析PHP中DIRECTORY_SEPARATOR,PATH_SEPARATOR两个常量的作用
2013/06/21 PHP
关于ob_get_contents(),ob_end_clean(),ob_start(),的具体用法详解
2013/06/24 PHP
THINKPHP项目开发中的日志记录实例分析
2014/12/01 PHP
php使用json_decode后数字对象转换成了科学计数法的解决方法
2017/02/20 PHP
yii框架无限极分类的实现方法
2017/04/08 PHP
laravel获取不到session的三种解决办法【推荐】
2018/09/16 PHP
PHP DB 数据库连接类定义与用法示例
2019/03/11 PHP
php菜单/评论数据递归分级算法的实现方法
2019/08/01 PHP
js实现运行代码需要刷新的解决方法
2007/08/18 Javascript
30个最佳jQuery Lightbox效果插件分享
2011/04/11 Javascript
javascript中的throttle和debounce浅析
2014/06/06 Javascript
jquery制作 随机弹跳的小球特效
2015/02/01 Javascript
JavaScript中的标签语句用法分析
2015/02/10 Javascript
javascript伸缩菜单栏实现代码分享
2015/11/12 Javascript
如何解决ligerUI布局时Center中的Tab高度大小
2015/11/24 Javascript
如何清除IE10+ input X 文本框的叉叉和密码输入框的眼睛图标
2016/12/21 Javascript
jquery 通过ajax请求获取后台数据显示在表格上的方法
2018/08/08 jQuery
[47:10]完美世界DOTA2联赛PWL S3 LBZS vs Rebirth 第二场 12.16
2020/12/18 DOTA
python sys模块sys.path使用方法示例
2013/12/04 Python
python多线程编程方式分析示例详解
2013/12/06 Python
python中实现k-means聚类算法详解
2017/11/11 Python
python实现大转盘抽奖效果
2019/01/22 Python
Python实现定制自动化业务流量报表周报功能【XlsxWriter模块】
2019/03/11 Python
PYTHON如何读取和写入EXCEL里面的数据
2019/10/28 Python
tensorflow 保存模型和取出中间权重例子
2020/01/24 Python
解决在keras中使用model.save()函数保存模型失败的问题
2020/05/21 Python
MONNIER Frères英国官网:源自巴黎女士奢侈品配饰电商平台
2018/12/06 全球购物
小学校园文化建设汇报材料
2014/08/19 职场文书
幼儿园小班见习报告
2014/10/31 职场文书
整改报告怎么写
2014/11/06 职场文书
大学生学期个人总结
2015/02/12 职场文书
企业爱心捐款倡议书
2015/04/27 职场文书
企业安全生产规章制度
2015/08/06 职场文书
详解Redis复制原理
2021/06/04 Redis
十大冰系宝可梦排名,颜值最高的阿罗拉九尾,第三使用率第一
2022/03/18 日漫