2013-10-23 81 views
0

我目前使用正則表達式從任何輸入到文本區域的url中刪除www.。我ahve這個工作方式如下:正則表達式不滿足條件

var input = document.getElementById("tweet_text"); 
input.onkeyup = function() { 
    input.value = input.value.replace(/www\.*/,""); 
} 

當一個URL被複制,然後粘貼到文本區域,正則表達式做它的工作。

如果我手動輸入一個url,它不會刪除.。我到達最後的w,然後www被刪除,允許我繼續輸入。顯然,下一個字符將是一個.將保持在那裏,像這樣的東西最終會:

http://.example.com 

當它應該是這樣的:

http://example.com 

上的任何想法如何解決這個問題?

+1

替換(/ www \。/ g,'') –

回答

2

這是怎麼回事,因爲.*也匹配一個空的空間(0或更多的重複)。因此,www\.*將成功匹配www,並將其替換。然後當你繼續輸入.時,它將不符合該模式,因此不會被替換。

嘗試使用www\.+www\.代替:

input.value = input.value.replace(/www\.+/,""); 

或:

input.value = input.value.replace(/www\./,""); 
+0

input.value = input.value.replace(/ www \。+ /,「」)很好,謝謝! – danyo

+0

@danyo不客氣:) –

1

這個替換功能將工作:

input.value = input.value.replace(/(^|\/)www\./i, "$1"); 
+0

我不認爲OP希望www是一個詞的開頭。 – mavrosxristoforos

+0

@mavrosxristoforos:好的編輯了代碼。 – anubhava

0

這是因爲你鉤到onkeyup事件。改爲使用onblur代替。這應該能解決你的問題。