2016-04-12 53 views
-1

我想根據規則自動在任何頁面上創建超鏈接。例如,我想查找所有以'ate'結尾的單詞,並將它們變成超鏈接,包括單詞本身。像:Javascript高級替換 - RegExp?

  • '規範' 成爲'<a href="www.myurl.com/Regulate">Regulate</a>'
  • '聚集' 成爲'<a href="www.myurl.com/Congregate">Congregate</a>'

等。

起初,我嘗試將所有childNodes分解成單詞,將每個單詞與RegExp進行比較,然後使用該單詞構造新文本並進行替換。這確實有效......但是如果我將它應用到任何長度的頁面上,它都將永遠存在。

有沒有辦法用直的.Replace()RegExp來做到這一點?

回答

0

您可以使用此代碼:

var re = /\b(\w+ate)\b/g; 
var str = 'your string'; 
var subst = '<a href="www.myurl.com/$1">$1</a>'; 

var result = str.replace(re, subst); 

Live demo

+0

三江源,這是偉大的。也不知道這個正則表達式測試器的東西。 – KaleB

0

這段代碼做了一個循環,所有a,檢查是否aate終止,則更新其href屬性值。

Live demo

var rgx=/\b(\w+ate)\b/g; 
$('a').each(function(i,e){ 
    if(rgx.test($(e).html().trim())){ 

     $(e).attr('href','http://www.myurl.com/'+$(e).html().trim()) 
    } 

}) 

Live demo

+1

我不確定OP是否已經擁有'a'元素,如果不是,它會[失敗](https://jsfiddle.net/Lzakvh76/3/) –