Jquery中文网 www.jquerycn.cn
Jquery中文网 >  脚本编程  >  javascript  >  正文 js replace函数用法详解

js replace函数用法详解

发布时间:2015-07-11   编辑:www.jquerycn.cn
本文介绍了js replace函数的用法,javascript的replace函数用法,replace() 方法用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。

如何正确使用js replace函数呢?
例如,str = str.replace(",", "\\");
只替换第一个遇到的“,”。

一,javascript replace() 方法
定义和用法
replace() 方法用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。
语法stringobject.replace(regexp/substr,replacement)regexp/substr
必需。规定子字符串或要替换的模式的 regexp 对象。
请注意,如果该值是一个字符串,则将它作为要检索的直接量文本模式,而不是首先被转换为 regexp 对象。
replacement必需。一个字符串值。规定了替换文本或生成替换文本的函数。返回值
一个新的字符串,是用 replacement 替换了 regexp 的第一次匹配或所有匹配之后得到的。

说明
字符串 stringobject 的 replace() 方法执行的是查找并替换的操作。它将在 stringobject 中查找与 regexp 相匹配的子字符串,然后用 replacement 来替换这些子串。如果 regexp 具有全局标志 g,那么 replace() 方法将替换所有匹配的子串。否则,它只替换第一个匹配子串。(ps:这里是要注意的)
replacement 可以是字符串,也可以是函数。如果它是字符串,那么每个匹配都将由字符串替换。但是 replacement 中的 $ 字符具有特定的含义。如下表所示,它说明从模式匹配得到的字符串将用于替换。
$1、$2、...、$99与 regexp 中的第 1 到第 99 个子表达式相匹配的文本。$&与 regexp 相匹配的子串。$`位于匹配子串左侧的文本。$'位于匹配子串右侧的文本。$$直接量符号。
注意:ecmascript v3 规定,replace() 方法的参数 replacement 可以是函数而不是字符串。在这种情况下,每个匹配都调用该函数,它返回的字符串将作为替换文本使用。该函数的第一个参数是匹配模式的字符串。接下来的参数是与模式中的子表达式匹配的字符串,可以有 0 个或多个这样的参数。接下来的参数是一个整数,声明了匹配在 stringobject 中出现的位置。最后一个参数是 stringobject 本身。

下面介绍几个js replace函数的例子,以巩固对js replace函数的理解。(jquery中文网 www.jquerycn.cn)
例子 1
将使用 "w3school" 替换字符串中的 "microsoft":
 

复制代码 代码示例:
<script type="text/javascript">var str="visit microsoft!"document.write(str.replace(/microsoft/, "w3school"))</script>
 

输出:
visit w3school!

例子 2
将执行一次全局替换,每当 "microsoft" 被找到,它就被替换为 "w3school":
 

复制代码 代码示例:
<script type="text/javascript">
 var str="welcome to microsoft! "
str=str + "we are proud to announce that microsoft has "
str=str + "one of the largest web developers sites in the world."
 document.write(str.replace(/microsoft/g, "w3school"))
 </script>
 

输出:
welcome to w3school! we are proud to announce that w3schoolhas one of the largest web developers sites in the world.

例子 3
您可以使用本例提供的代码来确保匹配字符串大写字符的正确:
 

复制代码 代码示例:
text = "javascript tutorial";
 text.replace(/javascript/i, "javascript");

例子 4
将把 "doe, john" 转换为 "john doe" 的形式:
 

复制代码 代码示例:
name = "doe, john";
name.replace(/(\w+)\s*, \s*(\w+)/, "$2 $1");

例子 5
将把所有的花引号替换为直引号:
 

复制代码 代码示例:
name = '"a", "b"';
name.replace(/"([^"]*)"/g, "'$1'");

例子 6
将把字符串中所有单词的首字母都转换为大写:
 

复制代码 代码示例:
name = 'aaa bbb ccc';
uw=name.replace(/\b\w+\b/g, function(word){ return word.substring(0,1).touppercase()+word.substring(1);} );

自己的运用:
文中有提到replace像c#那样使用的话,只替换第一个匹配的字符,只有标志全局标志g,才会替换全部的。
文中我对这段话进行了标识。

开始对于 全局标志 g ,开始还不是很清楚,后来发现 text.replace(/javascript/g, "javascript");
前一个参数   /要转换的字/g   第二个参数是要替换为的字符串。
对于替换反斜杠“\” 的话,就是用这种方式   text = text.replace(/\\/g, "\\\\");

二,js replace方法使用介绍

replace() 方法的参数 replacement 可以是函数而不是字符串。在这种情况下,每个匹配都调用该函数,它返回的字符串将作为替换文本使用。

该函数的第一个参数是匹配模式的字符串。接下来的参数 是与模式中的子表达式匹配的字符串,可以有 0 个或多个这样的参数。
接下来的参数是一个整数,声明了匹配在 stringobject 中出现的位置。最后一个参数是 stringobject 本身。

以下演示了几种javascript正则表示式的repalce方式。
 

复制代码 代码示例:

//获取url的两个参数,并返回urlrewrite之前的真实url
var reg=new regexp("(http://www.jquerycn.cn/bookreader/)(\\d+),(\\d+).aspx","gmi");
var url="http://www.jquerycn.cn/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.jquerycn.cn/bookreader/)(\\d+),(\\d+).aspx","gmi");
var m=reg2.exec("http://www.jquerycn.cn/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.jquerycn.cn/bookreader/)(\\d+),(\\d+).aspx","gmi");
reg3.test("http://www.jquerycn.cn/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

三,js中replace方法的例子
replace() 方法用于将字符串用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。

注意:如果用正则表达式替换时, regexp 具有全局标志 g,那么 replace() 方法将替换所有匹配的子串。否则,它只替换第一个匹配子串。

js replace方法的例子:
 

复制代码 代码示例:

<script language="javascript">
var strm = "javascript is a good script language";
//在此我想将字母a替换成字母a
alert(strm.replace("a","a"));

</script>
//结果,它只替换了首字母。但如果加上正则表达式结果就不一样了!replace()支持正则表达式,它可以按照正则表达式的规则匹配字符或字符串,然后给予替换!
<script language="javascript">
var strm = "javascript is a good script language";
//在此我想将字母a替换成字母a
alert(strm.replace(/a/,"a"));
</script>
//但是结果还是没有更改,稍加修改就ok了。

<script language="javascript">
var strm = "javascript is a good script language";
//在此将字母a全部替换成字母a,当正则表达式有"g"标志时,代表将处理整个字符串
alert(strm.replace(/a/g,"a"));
</script>

以上介绍了js replace函数的用法,一些js replace的使用实例,希望对大家有所帮助。

您可能感兴趣的文章:
mysql replace的用法(替换指定字段字符串)
js replace函数用法详解
mysql使用replace函数进行字符串替换
js过滤url参数特殊字符的方法
js中replace字符替换函数的高级用法
ASP Replace 字符替换详解
js中replace与replaceall进行字符替换的用法举例
JS过滤url参数中的特殊字符
js replace用法实例详解
js去掉字符串左右空格的方法(eval与trim函数应用举例)

关键词: replace   
[关闭]