首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > JavaScript >

JS的replace步骤

2012-10-30 
JS的replace方法fromhttp://www.cnblogs.com/mxw09/archive/2010/08/12/1797905.htmlreplace() 方法的参数

JS的replace方法
from
http://www.cnblogs.com/mxw09/archive/2010/08/12/1797905.html


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);


exercise
http://hi.baidu.com/%B7%E7%D4%C6%D0%F9%BA%A3/blog/item/6a275c119f8d3a0f5aaf539e.html

<script language="javascript">
var strM = "javascript is a good script language";alert(strM.replace(/(javascript)\s*(is)/g,"$1 $2 fun. it $2"));

</script>

  我这儿举的例子都是很简单的应用,replace()在此点上与您使用正则表达式的能力成正比。您正则表达式越强,呵呵,那您就会越疯狂的爱上它。

  当然,我这儿推荐replace()的原因并不因为它能与正则表达式合作,而在于它还能与函数进行合作,发挥出强大的功能。

  先看看简单例子:将所有单词首字母换成大写。

<script language="javascript">
var strM = "javascript is a good script language";function change(word){ return word.indexOf(0).toUpperCase()+word.substring(1);}alert(strM.replace(/\b\w+\b/g,change));

</script>

  由上可知,当正则表达式有"g"标志时,代表将处理整个字符串,即函数change的变换将应用于所有匹配的对象。而该函数有三个或更多参数,具体个数视正则表达式而定。

  有了函数与正则表达式的配合,replace()处理字符串的功能空前强大起来了!

  最后还举个例子,将字符串所有单词倒序,用replace()处理是如此简单。

<script language="javascript">
var strM = "javascript is a good script language";function change(word){ var result = word.match(/(\w)/g);if ( result ){ var str = "";  for ( var i=result.length-1; i>=0; i-- ) {   str += result; } return str;}else{  return "null";}}alert(strM.replace(/\b(\w)+\b/g,change));

</script>

热点排行
Bad Request.