JS的replace方法详细介绍


Posted in Javascript onNovember 09, 2012

replace() 方法的参数 replacement 可以是函数而不是字符串。在这种情况下,每个匹配都调用该函数,它返回的字符串将作为替换文本使用。该函数的第一个参数是匹配模式的字符串。接下来的参数 是与模式中的子表达式匹配的字符串,可以有 0 个或多个这样的参数。接下来的参数是一个整数,声明了匹配在 stringObject 中出现的位置。最后一个参数是 stringObject 本身。
下文展示了几种javascript正则表示式的repalce方式,有些方式我们很少在别的地方看到,如第二种和第三方中方法。
//下面的例子用来获取url的两个参数,并返回urlRewrite之前的真实Url

var reg=new RegExp("(http://www.qidian.com/BookReader/)(\\d+),(\\d+).aspx","gmi"); 
var url="http://www.qidian.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("(http://www.qidian.com/BookReader/)(\\d+),(\\d+).aspx","gmi"); 
var m=reg2.exec("http://www.qidian.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("(http://www.qidian.com/BookReader/)(\\d+),(\\d+).aspx","gmi"); 
reg3.test("http://www.qidian.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 相关文章推荐
csdn 论坛技术区平均给分功能
Nov 07 Javascript
html中的input标签的checked属性jquery判断代码
Sep 19 Javascript
JavaScript 盒模型 尺寸深入理解
Dec 31 Javascript
jquery列表拖动排列(由项目提取相当好用)
Jun 17 Javascript
使用开源工具制作网页验证码的方法
Oct 17 Javascript
用jQuery.ajaxSetup实现对请求和响应数据的过滤
Dec 20 Javascript
js实现选项卡内容切换以及折叠和展开效果【推荐】
Jan 08 Javascript
js的三种继承方式详解
Jan 21 Javascript
Angular项目中$scope.$apply()方法的使用详解
Jul 26 Javascript
JavaScript同源策略和跨域访问实例详解
Apr 03 Javascript
基于jQuery.i18n实现web前端的国际化
May 04 jQuery
JavaScript canvas实现雪花随机动态飘落
Feb 08 Javascript
获取div编辑框,textarea,input text的光标位置 兼容IE,FF和Chrome的方法介绍
Nov 08 #Javascript
javascript模拟select,jselect的方法实现
Nov 08 #Javascript
js实现图片放大缩小功能后进行复杂排序的方法
Nov 08 #Javascript
jquery的ajax()函数传值中文乱码解决方法介绍
Nov 08 #Javascript
表头固定(利用jquery实现原理介绍)
Nov 08 #Javascript
Javascript继承(上)——对象构建介绍
Nov 08 #Javascript
异步javascript的原理和实现技巧介绍
Nov 08 #Javascript
You might like
php和js交互一例-PHP教程,PHP应用
2007/01/03 PHP
使用laravel根据用户类型来显示或隐藏字段
2019/10/17 PHP
yii 框架实现按天,月,年,自定义时间段统计数据的方法分析
2020/04/04 PHP
利用JS重写Cognos右键菜单的实现代码
2010/04/11 Javascript
TextArea不支持maxlength的解决办法(jquery)
2011/09/13 Javascript
Javascript中判断变量是数组还是对象(array还是object)
2013/08/14 Javascript
jQuery+easyui中的combobox实现下拉框特效
2015/02/27 Javascript
jQuery实现鼠标滑过点击事件音效试听
2015/08/31 Javascript
Sublime Text 3常用插件及安装方法
2015/12/16 Javascript
Bootstrap自动适应PC、平板、手机的Bootstrap栅格系统
2016/05/27 Javascript
ASP.NET jquery ajax传递参数的实例
2016/11/02 Javascript
100多个基础常用JS函数和语法集合大全
2017/02/16 Javascript
layer弹窗插件操作方法详解
2017/05/19 Javascript
详解AngularJS ng-class样式切换
2017/06/27 Javascript
jquery获取file表单选择文件的路径、名字、大小、类型
2019/01/18 jQuery
微信小程序实现轨迹回放的示例代码
2019/12/13 Javascript
JavaScript undefined及null区别实例解析
2020/07/21 Javascript
JavaScript React如何修改默认端口号方法详解
2020/07/28 Javascript
Python列表list数组array用法实例解析
2014/10/28 Python
解析Python中的异常处理
2015/04/28 Python
Python的Flask框架中SQLAlchemy使用时的乱码问题解决
2015/11/07 Python
Python编程求解二叉树中和为某一值的路径代码示例
2018/01/04 Python
Python高级用法总结
2018/05/26 Python
Python re 模块findall() 函数返回值展现方式解析
2019/08/09 Python
pygame实现俄罗斯方块游戏(基础篇2)
2019/10/29 Python
Python如何对XML 解析
2020/06/28 Python
用Python开发app后端有优势吗
2020/06/29 Python
使用HTML5里的classList操作CSS类
2016/06/28 HTML / CSS
法国发饰品牌:Alexandre De Paris
2018/12/04 全球购物
美国NBA官方商店:NBA Store
2019/04/12 全球购物
Myprotein亚太地区:欧洲第一在线运动营养品牌
2020/12/20 全球购物
一套C#面试题
2013/10/09 面试题
信用社主任竞聘演讲稿
2014/05/23 职场文书
三月法制宣传月活动总结
2014/07/03 职场文书
数据库连接池
2021/04/06 MySQL
Android 界面一键变灰 深色主题工具类
2022/04/28 Java/Android