2013-09-23 73 views
0

我目前正在試圖將其轉換:的Javascript轉換的[url =],以HTML鏈接

[url=http://example.com] this is a link [/url]

到一個標準的HTML鏈接:

<a href=http://example.com>this is a link</a> 

到目前爲止,我可以轉換url字符串鏈接,但[url=] [/url]仍然存在,我不知道如何過濾掉。

message.replace(/(\b(https?):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig, "<a href='$1'>$1</a>") 

如何才能篩選出[url=] [/url]的正則表達式,並確保this is a link(由用戶定義的文本)也保持?

回答

5

你只需將它添加到您的替換正則表達式:

message.replace(/\[url=(\b(https?):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])\]/ig, "<a href='$1'>$1</a>") 
       ^^^^^^ 

雖然你仍然有最後的URL標記,你可以用否定類使事情變得更加容易:

message.replace(/\[url=([^\]]+)\]\s*(.*?)\s*\[\/url\]/ig, "<a href='$1'>$2</a>") 

regex101 demo

編輯:由於潛在的其他標籤,使閉幕標籤文字

+0

謝謝傑裏,那就像一個魅力:) – Lodder

+0

@Lodder不客氣:) – Jerry

0

我會做,在3個步驟:

  • 更換[url=<a href="
  • </a>
  • 更換[/url]">

更換]但是,這只是一個意見。我通常喜歡保持簡單,然後轉到下一個問題。