如何正确使用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函数的理解。(脚本学堂 www.jb200.com)
例子 1
将使用 "w3school" 替换字符串中的 "microsoft":
输出:
visit w3school!
例子 2
将执行一次全局替换,每当 "microsoft" 被找到,它就被替换为 "w3school":
输出:
welcome to w3school! we are proud to announce that w3schoolhas one of the largest web developers sites in the world.
例子 3
您可以使用本例提供的代码来确保匹配字符串大写字符的正确:
例子 4
将把 "doe, john" 转换为 "john doe" 的形式:
例子 5
将把所有的花引号替换为直引号:
例子 6
将把字符串中所有单词的首字母都转换为大写:
自己的运用:
文中有提到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.jb200.com/bookreader/)(d+),(d+).aspx","gmi");
var url="http://www.jb200.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.jb200.com/bookreader/)(d+),(d+).aspx","gmi");
var m=reg2.exec("http://www.jb200.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.jb200.com/bookreader/)(d+),(d+).aspx","gmi");
reg3.test("http://www.jb200.com/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传入正则参数和字符传参数结果不同):
三,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的使用实例,希望对大家有所帮助。