2014-12-02 88 views
1

我對正則表達式並不是很滿意,而且我也沒有完全理解這一點,我從中得到的結果是,它找到每個h1併爲它的最後一個詞添加一個類。對此正則表達式的解釋

$("h1").html(function(index, old) { 
    return old.replace(/(\b\w+)$/, '<span class="myClass">$1</span>'); 
}); 

我試圖讓它通過最後兩個字符

回答

2

這個(寫得不好)的正則表達式在輸入結尾找到一個單詞字符序列(拉丁字母,數字和下劃線)。同樣可以實現更簡單:/\w+$/,因此\b也不parens在這裏實際上是必要的。

要匹配兩個最後的話,你會需要像

/\w+(?=(\W+\w+)?$)/g 

,這意味着「一個字,後面可以跟另一個字輸入年底前」。

要匹配兩個最後的字符 - 嗯,這是你應該能夠自己弄清楚的東西(提示:正則表達式語言中的任何字符是.(點))。

+0

我怎樣才能得到最後兩個字符? – 2014-12-02 13:43:03

+0

@CaioKawasaki:更新。 – georg 2014-12-02 13:44:48

+0

@georg好的答案,很好的挑戰= D – 2014-12-02 13:45:42

5

在這裏工作是和解釋:

/  : regex delimter 
    ( : begin capture group #1 
    \b : word boundary 
    \w+ : one or more word character (same as [a-zA-Z0-9_]+) 
)  : end of group 
    $  : end of string 
/  : regex delimiter 

它的字符串的最後一個字相匹配,即的硬道理h1標籤。

+2

我很難用初學者的眼光看待事物,但我不認爲這個「解釋」實際上可以解釋任何事情。爲他顯示_why_他需要'\ b'和所有這些東西(提示:他沒有)。 – georg 2014-12-02 13:51:17