JavaScript replace字符串替換函數(shù)的用法

replace JavaScript">

var strM = "javascript is a good script language";

//在此我想將字母a替換成字母A

alert(strM.replace("a","A"));

這樣只能替換第一個“a”字母

var strM = "javascript is a good script language";

//在此將字母a全部替換成字母A

alert(strM.replace(/a/g,"A"));

這樣可以替換所有“a”字母。其中g(shù)為全局標(biāo)志

JavaScript--正則表達(dá)式

正則表達(dá)式(regular expression)對象包含一個正則表達(dá)式模式(pattern)。它具有用正則表達(dá)式模式去匹配或代替一個串(string)中特定字符(或字符集合)的屬性(properties)和方法(methods)。

正則表達(dá)式構(gòu)造函數(shù): new RegExp("pattern"[,"flags"]);

參數(shù)說明:

pattern -- 一個正則表達(dá)式文本

flags -- 如果存在,將是以下值:

g: 全局匹配

i: 忽略大小寫

gi: 以上組合

在構(gòu)造函數(shù)中,一些特殊字符需要進(jìn)行轉(zhuǎn)意(在特殊字符前加"\")。正則表達(dá)式中的特殊字符:

字符? 含意

\ 轉(zhuǎn)意,即通常在"\"后面的字符不按原來意義解釋,如/b/匹配字符"b",當(dāng)b前面加了反斜桿后/\b/,轉(zhuǎn)意為

匹配一個單詞的邊界。

-或-

對正則表達(dá)式功能字符的還原,如"*"匹配它前面元字符0次或多次,/a*/將匹配a,aa,aaa,加了"\"后,/a\*/

將只匹配"a*"。

^? 匹配一個輸入或一行的開頭,/^a/匹配"an A",而不匹配"An a"

$? 匹配一個輸入或一行的結(jié)尾,/a$/匹配"An a",而不匹配"an A"

*? 匹配前面元字符0次或多次,/ba*/將匹配b,ba,baa,baaa

+? 匹配前面元字符1次或多次,/ba*/將匹配ba,baa,baaa

?? 匹配前面元字符0次或1次,/ba*/將匹配b,ba

(x)? 匹配x保存x在名為$1...$9的變量中

x|y? 匹配x或y

{n}? 精確匹配n次

{n,}? 匹配n次以上

{n,m}? 匹配n-m次

[xyz]? 字符集(character set),匹配這個集合中的任一一個字符(或元字符)

[^xyz]? 不匹配這個集合中的任何一個字符

[\b]? 匹配一個退格符

\b? 匹配一個單詞的邊界

\B? 匹配一個單詞的非邊界

\cX? 這兒,X是一個控制符,/\cM/匹配Ctrl-M

\d? 匹配一個字?jǐn)?shù)字符,/\d/ = /[0-9]/

\D? 匹配一個非字?jǐn)?shù)字符,/\D/ = /[^0-9]/

\n? 匹配一個換行符

\r? 匹配一個回車符

\s? 匹配一個空白字符,包括\n,\r,\f,\t,\v等

\S? 匹配一個非空白字符,等于/[^\n\f\r\t\v]/

\t? 匹配一個制表符

\v? 匹配一個重直制表符

\w? 匹配一個可以組成單詞的字符(alphanumeric,這是我的意譯,含數(shù)字),包括下劃線,如[\w]匹配"$5.98"

中的5,等于[a-zA-Z0-9]

\W? 匹配一個不可以組成單詞的字符,如[\W]匹配"$5.98"中的$,等于[^a-zA-Z0-9]。

說了這么多了,我們來看一些正則表達(dá)式的實(shí)際應(yīng)用的例子:

HTML代碼的屏蔽

function mask_HTMLCode(strInput) {

var myReg = /<(\w+)>/;

return strInput.replace(myReg, "<$1>");

}

E-mail地址驗(yàn)證:

function test_email(strEmail) {

var myReg = /^[_a-z0-9]+@([_a-z0-9]+\.)+[a-z0-9]{2,3}$/;

if(myReg.test(strEmail)) return true;

return false;

}

正則表達(dá)式對象的屬性及方法:

預(yù)定義的正則表達(dá)式擁有有以下靜態(tài)屬性:input, multiline, lastMatch, lastParen, leftContext,

rightContext和$1到$9。其中input和multiline可以預(yù)設(shè)置。其他屬性的值在執(zhí)行過exec或test方法后被根據(jù)

不同條件賦以不同的值。許多屬性同時擁有長和短(perl風(fēng)格)的兩個名字,并且,這兩個名字指向同一個值。(

JavaScript模擬perl的正則表達(dá)式)

正則表達(dá)式對象的屬性:

屬性 含義

$1...$9 如果它(們)存在,是匹配到的子串

$_ 參見input

$* 參見multiline

$& 參見lastMatch

$+ 參見lastParen

$` 參見leftContext

$''          參見rightContext

constructor   ? 創(chuàng)建一個對象的一個特殊的函數(shù)原型

global      ? 是否在整個串中匹配(bool型)

ignoreCase     匹配時是否忽略大小寫(bool型)

input        被匹配的串

lastIndex    ? 最后一次匹配的索引

lastParen    ? 最后一個括號括起來的子串

leftContext   ? 最近一次匹配以左的子串

multiline    ? 是否進(jìn)行多行匹配(bool型)

prototype    ? 允許附加屬性給對象

rightContext    最近一次匹配以右的子串

source      ? 正則表達(dá)式模式

lastIndex    ? 最后一次匹配的索引

正則表達(dá)式對象的方法:

方法 含義

compile     ? 正則表達(dá)式比較

exec        執(zhí)行查找

test        進(jìn)行匹配

toSource      返回特定對象的定義(literal

representing),其值可用來創(chuàng)建一個新的對象。重載Object.toSource方法得到的。

toString      返回特定對象的串。重載Object.toString方法得到的。

valueOf     ? 返回特定對象的原始值。重載Object.valueOf方法得到

例子:

var myReg = /(w+)s(w+)/;

var str? = "John Smith";

var newstr = str.replace(myReg, "$2, $1");

document.write(newstr);

將輸出"Smith, John"

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容