2013-01-23 81 views
0

如何進行替換,將段落中的所有純色地址變爲鏈接?如何從句子中獲得網址?

問題是週期在地址中有效,但地址可能在句子結尾。

測試字符串:

The link is: http://www.google.com/pants. And that is the link. 

我需要組出從http褲子。 (它是純文本,我需要讓HTML)

此正則表達式抓起期後褲等不好:

(^|[\n ])([\w]+?://[^\s]*) 

我敢肯定,我需要做一個超前的,但我不能把它放在^ \的字符集中。試圖做一個ifthenelse也沒有了我。

這裏是我的輸出啄:

$1<a href=\"$2\" target=\"_blank\">$2</a> 

嗨,人閱讀本。確保你知道這個網站:http://gskinner.com/RegExr/它的規則。這是我獲得任何正則表達式的唯一原因。

回答

1

假設在網址沒有空間和後它們的空間或結束字符串:

str = str.replace(
    /(https?:\/\/\S+?)(?=\.?(\s|$))/g, 
     '<a href="$1" target="_blank">$1</a>'); 

它捕獲的「http [秒]://」和非空格字符儘可能少的次數儘可能直到找前面有可選的.,然後是空格或字符串的結尾。

如果您想排除可能位於網址末尾的其他標點符號,您可以相應地更改位置預覽,例如, (?=[;:!,.]?(?:\s|$))

注意的是,上述正則表達式不打算只匹配有效網址,而您可能希望將\S[\w/.-]取代只匹配包含單詞字符和.-/網址。

In search of the perfect URL validation regex

+0

使用它們像這樣

str = str.replace(PATTERN/g, '<a href="$1" target="_blank">$1</a>'); 

你會發現噸其中好極了!非常感謝。讓我們看看我是否可以爲後代進行剖析。 – CBGraham

+0

我不能擊退? Frickin ...堅持下去。 – CBGraham

+0

剛剛注意到了php preg-replace標籤,我的答案使用了Javascript - 道歉。 – MikeM

0

這些一些模式對於網址正則表達式模式:

^http\://[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(/\S*)?$ 

^[a-zA-Z0-9\-\.]+\.(com|org|net|mil|edu|COM|ORG|NET|MIL|EDU)$ 

你可以在http://regexlib.com/