JS的replace方法介绍

 更新时间:2012年10月20日 02:17:12   作者:  
replace() 方法的参数 replacement 可以是函数而不是字符串。在这种情况下,每个匹配都调用该函数,它返回的字符串将作为替换文本使用
该函数的第一个参数是匹配模式的字符串。接下来的参数 是与模式中的子表达式匹配的字符串,可以有 0 个或多个这样的参数。接下来的参数是一个整数,声明了匹配在 stringObject 中出现的位置。最后一个参数是 stringObject 本身。
下文展示了几种javascript正则表示式的repalce方式,有些方式我们很少在别的地方看到,如第二种和第三方中方法。
复制代码 代码如下:

//下面的例子用来获取url的两个参数,并返回urlRewrite之前的真实Url
var reg=new RegExp("(https://www.jb51.net/BookReader/)(\\d+),(\\d+).aspx","gmi");
var url="https://www.jb51.net/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://www.jb51.net/BookReader/)(\\d+),(\\d+).aspx","gmi");
var m=reg2.exec("https://www.jb51.net/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://www.jb51.net/BookReader/)(\\d+),(\\d+).aspx","gmi");
reg3.test("https://www.jb51.net/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

相关文章

  • 详解TypeScript中模块化开发指南

    详解TypeScript中模块化开发指南

    在编程中,模块是指将相关的代码封装在一起,形成一个独立的单元,在这篇文章中,我们将深入探讨在TypeScript中如何定义、导入和导出模块,感兴趣的可以了解一下
    2023-06-06
  • JavaScript实现文本相似度对比

    JavaScript实现文本相似度对比

    这篇文章主要介绍了JavaScript实现文本相似度对比,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-06-06
  • JavaScript设计模式之调停者模式实例详解

    JavaScript设计模式之调停者模式实例详解

    这篇文章主要介绍了JavaScript设计模式之调停者模式,详细分析了调停者模式的概念、原理、优缺点并结合javascript实例形式给出了相关使用技巧,需要的朋友可以参考下
    2018-02-02
  • JS 实现发送短信验证码的“59秒后重新发送验证短信”功能

    JS 实现发送短信验证码的“59秒后重新发送验证短信”功能

    这篇文章主要介绍了JS 实现发送短信验证码的“59秒后重新发送验证短信”功能,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-08-08
  • IE6下拉框图层问题探讨及解决

    IE6下拉框图层问题探讨及解决

    有关IE6下拉框图层问题,一直困扰着大家,下面有个不错的方法大家可以尝试操作下
    2014-01-01
  • 微信小程序搜索框样式并实现跳转到搜索页面(小程序搜索功能)

    微信小程序搜索框样式并实现跳转到搜索页面(小程序搜索功能)

    这篇文章主要介绍了微信小程序搜索框样式并实现跳转到搜索页面(小程序搜索功能),需要的朋友可以参考下
    2020-03-03
  • ECharts入门教程

    ECharts入门教程

    ECharts 是一个使用JavaScript实现的开源可视化库,涵盖各行业图表,满足各种需求。这篇文章介绍了ECharts的基础知识,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-06-06
  • 异步安全加载javascript文件的方法

    异步安全加载javascript文件的方法

    这篇文章主要介绍了异步安全加载javascript文件的方法,实例分析了javascript实现文件异步加载的具体技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-07-07
  • 原生JS可拖动弹窗效果实例代码

    原生JS可拖动弹窗效果实例代码

    这篇文章介绍了原生JS可拖动弹窗效果实例代码,有需要的朋友可以参考一下
    2013-11-11
  • JavaScript canvas绘制渐变颜色的矩形

    JavaScript canvas绘制渐变颜色的矩形

    这篇文章主要为大家详细介绍了JavaScript canvas绘制渐变颜色的矩形,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-02-02

最新评论