如何从凌乱的用户输入中匹配/提取域名?

jim*_*ung 1 ruby regex ruby-on-rails

有一个表单字段,用户以"google.com"的形式输入域名.

但是,考虑到困惑的用户,我希望能够将输入清理为"google.com"的确切形式,以防他们输入以下情况:

http://www.google.com
http://google.com
google.com/blah
www.google.com
..and other incorrect forms
Run Code Online (Sandbox Code Playgroud)

完成此任务的最佳方法是什么?

提前致谢!

jhc*_*ran 6

你应该通过addressable/uri构建你的系统,这个gem会处理URI的东西(路径,主机,端口),你只需提供默认方案即可http.

(gem install addressable).

>> uri = Addressable::URI.parse("http://google.com?q=lolcat")
=> #<Addressable::URI:0x80bcf0e0 URI:http://google.com?q=lolcat>
>> [uri.host,uri.path,uri.scheme]
=> ["google.com", "", "http"]
Run Code Online (Sandbox Code Playgroud)

基本上你只需要检测http://是否存在并添加它,如果不是这样,因为URI不会为你猜测它.它完成了,没有更多的手动处理.