javascript的replace方法配合正则使用

来源:互联网 发布:我的世界1.7.10java 编辑:程序博客网 时间:2024/05/16 02:58

replace()方法用于在字符串中用一些字符替换另一些字符,或者替换一个正则表达式匹配的字符串

 

例子一:直接使用repalce替换(替换第一个匹配的)

var stringObj="终古人民共和国,终古人民";   //替换错别字“终古”为“中国”   //并返回替换后的新字符   //原字符串stringObj的值没有改变   var newstr=stringObj.replace("终古","中国");   //中国人民共和国,终古人民alert(newstr);   

 

例子二:使用正则表达式,全部替换 

var str="终古人民共和国,终古人民";   var newstr=str.replace(/(终古)/g,"中国");   //中国人民共和国,中国人民alert(newstr);

等价于 

var reg=new RegExp("终古","g"); //创建正则RegExp对象  var stringObj="终古人民共和国,终古人民";   var newstr=stringObj.replace(reg,"中国"); alert(newstr);

 

例子三:正则表达式,变量匹配  

var resource="终古";var target="中国";var reg=new RegExp(resource,"g"); //创建正则RegExp对象  var stringObj="终古人民共和国,终古人民";   var newstr=stringObj.replace(reg,target); alert(newstr);

  

例子四:正则分组匹配(使用括号分组 

var strM = "javascript is a good script language"; //$1匹配的是javascript,$2匹配的是is//最终返回的值是"javascript is fun. it is" + strM//即javascript is 被替换为 javascript is fun. it isalert(strM.replace(/(javascript)\s*(is)/g,"$1 $2 fun. it $2")); 

 

例子五:使用回调函数做详细处理  

var name="aaa bbb ccc";//name字符串去匹配/\b\w+\b/g表达式,结果有三个——aaa,bbb,ccc;每个结果执行function里面的方法var uw = name.replace(/\b\w+\b/g,function(word){        //word是匹配的字符串        alert(word);return word.substring(0,1).toUpperCase()+word.substring(1);});alert(uw);

 

 例子六:比较生僻的写法 

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

  

function ReplaceDemo(){   var r, re;                      // 声明变量。   var ss = "The rain in Spain falls mainly in the plain.";   // \s表示的是空格,则\S表示的是非空格,因此/(\S+)(\s+)(\S+)/g匹配的是“非空格空格非空格”的结果   //匹配的结果有The rain、in Spain、falls mainly、in the   //替换后的结果有rain The、Spain in、mainly falls、the in   re = /(\S+)(\s+)(\S+)/g;        // 创建正则表达式模式。   //更改匹配结果之间的顺序   r = ss.replace(re, "$3$2$1");   // 交换每一对单词。   return(r);                      // 返回结果字符串。}alert(ReplaceDemo());

 

name = "Doe, John";//更改两个单词之间的顺序var temp = name.replace(/(\w+)\s*, \s*(\w+)/, "$2 $1");alert(temp);

 

function SDReplaceData(objStr){    return objStr.replace( /(\&|\')/g,                          function($0, $1)                          {                              return{                                  "&" : "&"                                , "'" : "'"                              }[$1];                          }                         );}

 

0 0
原创粉丝点击