【www.bbyears.com--php函数】
replace() 方法的参数 replacement 可以是函数而不是字符串。在这种情况下,每个匹配都调用该函数,它返回的字符串将作为替换文本使用。该函数的第一个参数是匹配模式的字符串。接下来的参数 是与模式中的子表达式匹配的字符串,可以有 0 个或多个这样的参数。接下来的参数是一个整数,声明了匹配在 stringObject 中出现的位置。最后一个参数是 stringObject 本身
方式一,最简单常用的方式
代码如下<script language="javascript">
var stringObj="终古人民共和国,终古人民";
//替换错别字“终古”为“中国”
//并返回替换后的新字符
//原字符串stringObj的值没有改变
var newstr=stringObj.replace("终古","中国");
alert(newstr);
</script>
方式二 ,采用固定参数的回调函数
代码如下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);
方法四,正则模式替换
代码如下
//把word-word转化为wordWord
function camelize(s){
return s.replace(/-(w)/g, function(strMatch, p1){
return p1.toUpperCas();
});
}
如果
有N的N次方个错别字,是不是也要执行N的N次方replace方法来替换掉错别字呢??呵,不用怕,有了正则表达式之后不用一个错别字要执行一次replace方法。。程序经过改进之后的代码如下
Js代码
代码如下 <script language="javascript">var reg=new RegExp("终古","g"); //创建正则RegExp对象
var stringObj="终古人民共和国,终古人民";
var newstr=stringObj.replace(reg,"中国");
alert(newstr);
</script>
在使用过程中自己碰的问题解析
代码如下 str=str.replace("hand","hand.gif");输出:hand.gif hand hand
只替换了一次。。。:(
于是写
代码如下 str = str.replace(/hand/,"hand.gif")无效。。。
全部替换要加g,
还是不行:(
后来百度,google都找到了得到了结果是原来要用()括起来,才会替换()里的东东。正确的写法如下:
代码如下str = "hand hand hand";
str=str.replace(/(hand)/g,"hand.gif");
document.write(str);
正确输出:hand.gif hand.gif hand.gif。
JS的正则另一种写法是使用RegExp:
代码如下 如str=str.replace(/(hand)/g,"hand.gif");等同于:
reg = new RegExp("(hand)","g");
str = str.replace(reg,"hand.gif");