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代码
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> |
相关文章推荐
- javascript replace()用法详解附实例代码
- javascript中replace()用法详解
- 基于JavaScript中字符串的match与replace方法(详解)
- javascript replace()用法详解附实例代码
- javascript中replace()用法详解
- Python3中正则模块re.compile、re.match及re.search函数用法详解
- preg_replace()和preg_match_all()用法比较
- MySQL数据库INSERT、UPDATE、DELETE以及REPLACE语句的用法详解
- 结构体定义 typedef struct 用法详解和用法小结
- 结构体定义 typedef struct 用法详解和用法小结
- C++ replace() 函数用法详解
- JavaScript引用类型RegExp基本用法详解
- Sqlite3中replace语句用法详解
- javascript 用函数语句和表达式定义函数的区别详解
- JavaScript通过prototype给对象定义属性用法实例
- 结构体定义 typedef struct 用法详解和用法小结
- HTML/CSS中有序<ol&g bfb7 t;、无序<ul>、定义列表用法详解
- MySQL中replace into语句的用法详解
- javascript 正则替换 replace(regExp, function)用法
- JavaScript定义类,定义属性,定义方法的几种方式详解与分析