
\s* 匹配空格0次或多次
\S匹配非空格0次或多次
[\s\S]* 是完全通配的意思,\s是指空白,包括空格、換行、tab縮進(jìn)等所有的空白,而\S剛好相反,這樣一正一反下來(lái),就表示所有的字符,完全的,一字不漏的。與它相對(duì)應(yīng)的,有[\w\W]等,意義完全相同,另外要說(shuō)的一點(diǎn)是,為什么有"."這個(gè)通配符了,還要這樣的用法。其實(shí),[\s\S]? [\w\W] [\d\D]這樣的用法,比較"."所匹配的還要多,因?yàn)?."是不會(huì)匹配換行的,所有出現(xiàn)有換行匹配的時(shí)候,人們就習(xí)慣 使用[\s\S]或者[\w\W]這樣的完全通配模式。
我們把 "Doe, John" 轉(zhuǎn)換為 "John Doe" 的形式:
var name = "Doe, John";
var name_reverse =? name.replace(/(\w+)\s*, \s*(\w+)/, "$2 $1");
關(guān)于正則表達(dá)式的“\b”(http://www.cnblogs.com/newsouls/p/3781812.html)
今天剛剛開(kāi)始看正則表達(dá)式就遇到一個(gè)十分頭疼的問(wèn)題,原文是這樣的:
“不幸的是,很多單詞里包含hi這兩個(gè)連續(xù)的字符,比如him,history,high等等。用hi來(lái)查找的話,這里邊的hi也會(huì)被找出來(lái)。如果要精確地查找hi這個(gè)單詞的話,我們應(yīng)該使用\bhi\b。
\b是正則表達(dá)式規(guī)定的一個(gè)特殊代碼(好吧,某些人叫它元字符,metacharacter),代表著單詞的開(kāi)頭或結(jié)尾,也就是單詞的分界處。雖然通常英文的單詞是由空格,標(biāo)點(diǎn)符號(hào)或者換行來(lái)分隔的,但是\b并不匹配這些單詞分隔字符中的任何一個(gè),它只匹配一個(gè)位置”
問(wèn)題來(lái)了,什么叫只匹配一個(gè)位置????
要知道是一個(gè)單詞的開(kāi)頭,這個(gè)\b是去匹配開(kāi)頭的分隔符還是匹配開(kāi)頭的第一個(gè)字母??
從網(wǎng)上找到了這樣一句話:“如果需要更精確的說(shuō)法,\b匹配這樣的位置:它的前一個(gè)字符和后一個(gè)字符不全是(一個(gè)是,一個(gè)不是或不存在)\w(匹配字母或數(shù)字或下劃線或漢字)”
這 句話很隱晦的說(shuō)出了是去匹配第一個(gè)字母,而不是去匹配分割符(我這說(shuō)的匹配分隔符和上邊說(shuō)的不去匹配任何一個(gè)分隔符并不矛盾,因?yàn)槲医?jīng)過(guò)實(shí)驗(yàn)已經(jīng)進(jìn)本猜出 了一個(gè)單詞兩邊只要沒(méi)有數(shù)字、字母、漢字、下劃線就可以認(rèn)為是獨(dú)立單詞,我說(shuō)的匹配分隔符是去判斷單詞前一個(gè)字符是不是在這四個(gè)之外,是的話就認(rèn)為是單詞 開(kāi)頭)
再加上下邊的兩個(gè)例子就可以很清晰的理解這句很隱晦的話。
引用Microsoft?? VBScript?? Regular?? Expression
Dim myReg As RegExp
Set myReg = New RegExp
myReg.Pattern = "a\b.*h.*"
Print myReg.Test("a,chia")
輸出的結(jié)果為T(mén)ure 說(shuō)明是匹配的a,而不是,
Dim myReg As RegExp
Set myReg = New RegExp
myReg.Pattern = "a.* \b h.*"
Print myReg.Test("a,chia")
輸出的結(jié)果為flash 說(shuō)明匹配的是h,而不是c
這兩個(gè)例子非常有助于理解\b的真實(shí)含義,希望對(duì)大家有幫助!