2014-01-18 29 views
1

我很抱歉發佈(我通常試圖躲開它),但我無法弄清楚我的問題。 我嘗試用jQuery和正則表達式替換頁面內容中的特定單詞。jQuery替換HTML標記和鏈接外的內容

但我不想用HTML標記和鏈接替換單詞。 示例 - 這裏是原句:

Let's talk about John. John is a nice guy and rocks. <a href="www.john.com">Click here to meet up John.</a> 

如果我想替換「約翰」到「凱文」,它應該成爲:

Let's talk about Kevin. Kevin is a nice guy and rocks. <a href="www.john.com">Click here to meet up John.</a> 

什麼我迄今所做的:

new RegExp("(?!<a.*?>)John(?!</a>)(?!([^<]+)?>)","g"); 

它幾乎完成了這項工作,但它不適用於上述示例。它顯示:

Let's talk about Kevin. Kevin is a nice guy and rocks. <a href="www.john.com">Click here to meet up Kevin.</a> 

對不起,我不太瞭解正則表達式。如果你能幫我一把,我會很高興。 非常感謝!

回答

1

嘗試這個隊友! :)

John(?![^<]*</a>) 

工作例如:

http://regex101.com/r/hS2mI2

因此JavaScript將是:

new RegExp("John(?![^<]*</a>)","g"); 

如果 「約翰」 需要是不區分大小寫的,你想補充i標誌,當然,像這樣: - > new RegExp(「John(?![^ <] *)」,「g i」);

+1

這正是我的答案..檢查鏈接..試試吧。什麼不適合你? – MElliott

+0

哇!感謝一羣朋友!你是天才!我會稍後嘗試,但它似乎是我正在尋找的正則表達式!可以給我一點解釋嗎?任何有關正則表達式的好書嗎? – user1361620

+1

對不起,我匆忙 - 我做錯了,但它的工作原理!謝謝:) – user1361620