2014-08-29 29 views
1

我有這個基本的Chrome擴展,它用'James Montour'替換'hipster'的實例。然而,它搜索整個body這些實例,並且甚至在URL中也會替換該單詞,這顯然會中斷圖像和鏈接。我需要弄清楚如何防止這種情況,並且我對regex不擅長。正則表達式:替換文字,除非網址?

這裏是我的代碼:

$(document).ready(function() { 
    var replaced = $("body").html().replace(/hipster/gi, 'James Montour'); 
    $("body").html(replaced); 
}); 

我應該吃什麼?

+2

您是否嘗試添加單詞邊界? '\ bhipster \ b'。舉個例子會更好.. – 2014-08-29 21:15:11

回答

0

一個確切的單詞將在第一個後面跟一個空格,或者最後一個空格前面或者中間前面和後面跟一個空格。該邏輯是在下面的正則表達式所使用的,

string.replace(/(^|)hipster(?= |$)/g, "$1James Montour") 

DEMO

說明:

  • (^|)捕獲起始錨定件或空間中的線。
  • hipster(?= |$)只有在後面跟着一個空格或行尾的尾部時,才匹配hipster這個詞。
+0

要小心解釋一下嗎? – hwnd 2014-08-29 21:24:30