第一次发现JavaScript中replace()方法如果直接用str.replace("-","!")只会替换第一个匹配的字符.
而str.replace(/-/g,"!")则可以全部替换掉匹配的字符(g为全局标志)。
replace()
Thereplace()methodreturnsthestringthatresultswhenyoureplacetextmatchingitsfirstargument
(aregularexpression_r)withthetextofthesecondargument(astring).
Iftheg(global)flagisnotsetintheregularexpression_rdeclaration,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:用于替换的子字符串。
- <scripttype="text/javascript">
- String.prototype.replaceAll=function(reallyDo,replaceWith,ignoreCase){
- if(!RegExp.prototype.isPrototypeOf(reallyDo)){
- returnthis.replace(newRegExp(reallyDo,(ignoreCase?"gi":"g")),replaceWith);
- }else{
- returnthis.replace(reallyDo,replaceWith);
- }
- }
- </script>
<script type="text/javascript">String.prototype.replaceAll = function(reallyDo, replaceWith, ignoreCase) { if (!RegExp.prototype.isPrototypeOf(reallyDo)) { return this.replace(new RegExp(reallyDo, (ignoreCase ? "gi": "g")), replaceWith); } else { return this.replace(reallyDo, replaceWith); }}</script>
另:大全
http://hi.baidu.com/wodemy/blog/item/f1fba016858be210962b4331.html