您的位置:首页 > Web前端 > JavaScript

javascript中replace()用法详解+match() 定义和用法

2011-08-02 09:35 801 查看

javascript中replace()用法详解

在javascript中,String的函数replace()简直太让人喜爱了。它灵活而强大的字符替换处理能力,让我不禁想向大家介绍它。 

 replace()最简单的算是能力就是简单的字符替换。

示例代码如下:

<scriptlanguage="javascript">

varstrM="javascriptisagoodscriptlanguage";//在此我想将字母a替换成字母Aalert(strM.replace("a","A"));

</script>  

我想大家运行后可以看到结果,它只替换了首字母。但如果加上正则表达式结果就不一样了!呵呵,没错。replace()支持正则表达式,它可以按照正则表达式的规则匹配字符或字符串,然后给予替换!

<scriptlanguage="javascript">v

arstrM="javascriptisagoodscriptlanguage";//在此我想将字母a替换成字母Aalert(strM.replace(/a/,"A"));

</script>  

呵呵,您一定发现了。这样还是只替换了第一个字母a。如果您熟悉正则,那这就难不住您。稍加修改就OK了。<scriptlanguage="javascript">

varstrM="javascriptisagoodscriptlanguage";//在此将字母a全部替换成字母Aalert(strM.replace(/a/g,"A"));

</script> 

 还可以这样,看看效果!

<scriptlanguage="javascript">

varstrM="javascriptisagoodscriptlanguage";alert(strM.replace(/(javascript)/s*(is)/g,"$1$2fun.it$2"));

</script>  

我这儿举的例子都是很简单的应用,replace()在此点上与您使用正则表达式的能力成正比。您正则表达式越强,呵呵,那您就会越疯狂的爱上它。  当然,我这儿推荐replace()的原因并不因为它能与正则表达式合作,而在于它还能与函数进行合作,发挥出强大的功能。 

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

<scriptlanguage="javascript">

varstrM="javascriptisagoodscriptlanguage";functionchange(word){ returnword.indexOf(0).toUpperCase()+word.substring(1);}alert(strM.replace(//b/w+/b/g,change));

</script>  

由上可知,当正则表达式有"g"标志时,代表将处理整个字符串,即函数change的变换将应用于所有匹配的对象。而该函数有三个或更多参数,具体个数视正则表达式而定。  有了函数与正则表达式的配合,replace()处理字符串的功能空前强大起来了!  最后还举个例子,将字符串所有单词倒序,用replace()处理是如此简单。

<scriptlanguage="javascript">

varstrM="javascriptisagoodscriptlanguage";

functionchange(word)

{ varresult=word.match(/(/w)/g);if(result){ varstr=""; 

for(vari=result.length-1;i>=0;i--) 

{  str+=result; } 

returnstr;

}

else{ return"null";}}

alert(strM.replace(//b(/w)+/b/g,change));

</script>

========================================================

分割线

========================================================

match()定义和用法

match()方法可在字符串内检索指定的值,或找到一个或多个正则表达式的匹配。

该方法类似indexOf()和lastIndexOf(),但是它返回指定的值,而不是字符串的位置。

语法

stringObject.match(searchvalue)
stringObject.match(regexp)

参数描述
searchvalue必需。规定要检索的字符串值。
regexp必需。规定要匹配的模式的RegExp对象。如果该参数不是RegExp对象,则需要首先把它传递给RegExp构造函数,将其转换为RegExp对象。

返回值

存放匹配结果的数组。该数组的内容依赖于regexp是否具有全局标志g。

说明

match()方法将检索字符串stringObject,以找到一个或多个与regexp匹配的文本。这个方法的行为在很大程度上有赖于regexp是否具有标志g。

如果regexp没有标志g,那么match()方法就只能在stringObject中执行一次匹配。如果没有找到任何匹配的文本,match()将返回null。否则,它将返回一个数组,其中存放了与它找到的匹配文本有关的信息。该数组的第0个元素存放的是匹配文本,而其余的元素存放的是与正则表达式的子表达式匹配的文本。除了这些常规的数组元素之外,返回的数组还含有两个对象属性。index属性声明的是匹配文本的起始字符在stringObject中的位置,input属性声明的是对stringObject的引用。

如果regexp具有标志g,则match()方法将执行全局检索,找到stringObject中的所有匹配子字符串。若没有找到任何匹配的子串,则返回null。如果找到了一个或多个匹配子串,则返回一个数组。不过全局匹配返回的数组的内容与前者大不相同,它的数组元素中存放的是stringObject中所有的匹配子串,而且也没有index属性或input属性。

注意:在全局检索模式下,match()即不提供与子表达式匹配的文本的信息,也不声明每个匹配子串的位置。如果您需要这些全局检索的信息,可以使用RegExp.exec()。

实例

例子1

在本例中,我们将在"Helloworld!"中进行不同的检索:

<scripttype="text/javascript">

varstr="Helloworld!"
document.write(str.match("world")+"<br/>")
document.write(str.match("World")+"<br/>")
document.write(str.match("worlld")+"<br/>")
document.write(str.match("world!"))

</script>

输出:

world
null
null
world!

例子2

在本例中,我们将使用全局匹配的正则表达式来检索字符串中的所有数字:

<scripttype="text/javascript">

varstr="1plus2equal3"
document.write([code]str.match(/\d+/g)
)

</script>
[/code]
输出:

1,2,3


=====================================================

分割线

=====================================================

javascript中使用replaceAll()的方法(转)

第一次发现JavaScript中replace()方法如果直接用str.replace("-","!")只会替换第一个匹配的字符.
而str.replace(/\-/g,"!")则可以全部替换掉匹配的字符(g为全局标志)。

replace()
Thereplace()methodreturnsthestringthatresultswhenyoureplacetextmatchingitsfirstargument
(aregularexpression)withthetextofthesecondargument(astring).
Iftheg(global)flagisnotsetintheregularexpressiondeclaration,thismethodreplacesonlythefirst
occurrenceofthepattern.Forexample,

vars="Hello.Regexpsarefun."
;s=s.replace(/\./,"!");//replacefirstperiodwithanexclamationpointalert(s);

producesthestring“Hello!Regexpsarefun.”Includingthegflagwillcausetheinterpreterto
performaglobalreplace,findingandreplacingeverymatchingsubstring.Forexample,

vars="Hello.Regexpsarefun."
;s=s.replace(/\./g,"!");//replaceallperiodswithexclamationpointsalert(s);

yieldsthisresult:“Hello!Regexpsarefun!”

所以可以用以下几种方式.:
string.replace(/reallyDo/g,replaceWith);
string.replace(newRegExp(reallyDo,'g'),replaceWith);

string:字符串表达式包含要替代的子字符串。
reallyDo:被搜索的子字符串。
replaceWith:用于替换的子字符串。

Js代码



viewsource

print?

01
<scripttype=
"text/javascript"
>
02
03
  String.prototype.replaceAll=
function
(reallyDo,replaceWith,ignoreCase){
04
05
 
if
(!RegExp.prototype.isPrototypeOf(reallyDo)){
06
07
return
this
.replace(
new
RegExp(reallyDo,(ignoreCase?
"gi"
:
"g"
)),replaceWith);
08
09
}
else
{
10
11
return
this
.replace(reallyDo,replaceWith);
12
13
}
14
15
}
16
17
</script>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: