2012-11-27 180 views
0

嗨,我已經有了很好的舊替換原始鏈接來鏈接問題。 我使用Jeff Roberson的代碼 的鏈接,但由於它不支持僞網址(www。),我試圖用另一個正則表達式添加它。 到目前爲止,我堅持這個正則表達式來替換鏈接

var replacePattern2 = /(^|[^\/])(www\.[\S]+(\b|$))/gim; 
    text.replace(pseudoUrlPattern, '$1<a target="_blank" href="http://$2">$2</a>') 

的文本可以是一個HTML標記,當鏈接有一個結束p標記沒有任何空間似乎要包括的鏈接!我已經試過向前看,但似乎我沒有得到它的權利。 一個例子文本將

<p>www.something.here/something</p> 

回答

0

怎麼是這樣的:在此基礎上正則表達式

var text = "<p>www.something.here/something</p>"; 
var replacePattern2 = /(.*?)(((([A-Za-z]{3,9}:(?:\/\/)?)(?:[-;:&=\+\$,\w][email protected])?[A-Za-z0-9.-]+|(?:www.|[-;:&=\+\$,\w][email protected])[A-Za-z0-9.-]+))((?:\/[\+~%\/.\w-_]*)?\??(?:[-\+=&;%@.\w_]*)#?(?:[\w]*))?)/gim; 
text.replace(replacePattern2, '$1<a target="_blank" href="$4">$4</a>') 

http://blog.mattheworiordan.com/post/13174566389/url-regular-expression-for-links-with-or-without-the

+0

嗨,感謝,它幾乎在那裏,但www.something.com成爲一個鏈接到域/ www.something.com而不是http://如果沒有協議,我希望它添加http,否則我希望它使用文本中的一個。此外,它將以[email protected]形式將電子郵件更改爲domain /[email protected] – Yun

+0

我認爲如果我們刪除了對電子郵件的支持,它將起作用。在那之後我有電子郵件正則表達式.. var emailAddressPattern = /(([a-zA-Z0-9_\-\.]+)@[a-zA-Z_]+?(?:\.[a-zA-Z ] {2,6-}))+/GIM;運行replacePattern2後,我將運行emailAddressPattern ..因此,如果我們可以以某種方式將這兩者結合起來,或者排除電子郵件模式,我認爲它會起作用 – Yun