如何在Go中检测有效的URL?

huangapple go评论76阅读模式
英文:

How to detect valid URLs in go?

问题

我想在将URL发送到REST API之前,在我的程序中检查有效的URL。我在Go语言中使用了regexp包。以下是我的正则表达式:

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

我使用regexp.MatchString()方法将其与输入进行匹配。

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

然而,这会给我一些无效的URL,例如http:////:9000http://a.

在Go语言中,是否有任何可以导入以进行更可靠的URL检查的包?

英文:

I wanted to try check for valid urls when i enter it in my program before I send requests to it using the rest API. I used the regexp package in go. The following is my regexp :

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

I match it to my input using the regexp.MatchString() method.

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

However this gives me a valid url for cases such as http:////:9000 or http://a.

Are there any packages in go that I can import for more robust url checking ?

答案1

得分: 2

你需要使用net/url.Parse()函数。

import (
    "net/url"
)

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

这段代码会将args[0]解析为URL对象。

英文:

You'll want to use net/url.Parse().

 import (
         "net/url"
 )

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

huangapple
  • 本文由 发表于 2016年1月20日 11:50:20
  • 转载请务必保留本文链接:https://go.coder-hub.com/34891261.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定