2016-01-20 147 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