2016-01-20 145 views
-1

我想在使用其他API向其發送請求之前,在我的程序中輸入它時嘗試檢查有效的URL。我使用了正則表達式包。以下是我的正則表達式:如何檢測有效的URL?

urlRegex := "^(https?://)[-a-zA-Z0-9+&@#/%?=~_|!:,.;]*[-a-zA-Z0-9+&@#/%=~_|]" 

我把它匹配使用regexp.MatchString()方法我輸入。

match, _ := regexp.MatchString(urlRegex, args[0]) 

但是這給了我的情況下,如http:////:9000 or http://a.

有效的URL是否有在去任何包,我可以導入了更強大的URL檢查?

+0

閱讀:https://www.socketloop.com/tutorials/golang-how-to-validate-url-the-right-way – Raptor

+0

你tyring可撤消? – Volker

回答

2

你會想要使用net/url.Parse()

import (
     "net/url" 
) 

_, err := url.Parse(args[0]) 
+0

我試過用這個。它不會給我任何上述情況的錯誤。對於例如:url.Parse(「////:9000」)不會返回錯誤。 – kbinstance

+0

爲什麼它應該返回一個錯誤? – Joseph

+0

由於在上面的情況下url不是絕對的。沒有給出協議。 – kbinstance