2011-07-10 85 views
1

我想借此Twitter文字是這樣的:正則表達式從字符串的URL剝離

s = "Today 09/07 sunday http://t.co/123 - AC/DC COVER Opening and DVD - woman R$10/man R$15. - http://migre.me/59qwc" 

,並把它變成這個..

s = "Today 09/07 sunday LINK - AC/DC COVER Opening and DVD - woman R$10/man R$15. - LINK" 

這個片段失敗出於某種原因,請,一些幫助

s.replace(/(http\:.*)\s/g , 'LINK') 
+0

什麼是 「失敗」 是什麼意思? – jtbandes

+0

我會假設它不會取代任何東西... – psynnott

+0

我期望它會用「LINK :)」替換「星期日」到「http://migre.me/59qwc」的所有內容:) –

回答

3

嘗試使用

/\bhttps?\:\S*/ig 

它使用\S*相匹配的非空格字符運行,從而不會有在輸入端的匹配問題沒有以下空間的地方。

+0

工作完美,謝謝! –

0

。*會吃的所有,包括空格,所以這個耳目一新,直到它不能走得更遠,那麼它backtr acks找到單個空白字符。你必須只匹配URL的非空白字符,你就完成了。

+0

不要忘記,URL不*必須以空白結尾,但在Java中,我會用不情願的量詞來實現這一點,包括輸入的結尾($),但JavaScript語言似乎不夠強大。 –

+0

@owistead,'$'在JavaScript中工作得很好。總的來說,你是對的。 JavaScript正則表達式語言缺少一些'java.util.regex'包含的向後和unicode字符類。 –

+0

@mike:我並不是說JavaScript缺少$(這會很奇怪),但是我會在含有不情願的量詞的部分包含$,並且*缺少。當然,這不會扣留像你這樣的聰明人在沒有他們的情況下給出答案:) –

0

如前所述,.*將匹配空格,從而取代所有內容。根據您所使用的系統,您可能會得到類似\S*的東西,它只匹配非空白字符,或者更明確的[^] *。

0

這應該從你的文本中去掉HTML

s.replace(/<.*?>/g, ''); 
+0

這是一個很好的移除_tags_的正則表達式,但最初的問題是詢問如何移除以「http://」或「https://」開頭的網址。 –

1

嘗試:

input.replace(/http:\/{2}[^\s]+/,"link") 
+0

+1這只是最後一個URL失敗。 –