2017-06-06 12 views
0

URI :: regexpでURLを検証する必要がありますが、一部のURLにはスキームがありません。Rails URI :: regexpがスキームなしで一致する

私は

URI::regexp(["http", "http]) 
URI::regexp(%w(http https tel) 

、使用してみましたが、彼らは、そのような "www.google.com" "google.com" として空のスキームを検証することはできません。

このようなURLを含める/検証するにはどうすればよいですか?

答えて

0

URI::DEFAULT_PARSER.regexp[:ABS_URI]sourceから試してください。 「How to check if a URL is valid」で述べたように、それはまた、特定の条件で失敗しますが、あなたはそれでOKであれば、それは行くために良いことだ:

def valid?(url) 
    !!(url =~ URI::ABS_URI || url =~ URI::REL_URI) 
end 
+0

これは、有効なURLはここにある:?有効な(「foo」で) –

0
inp = %w|www.google.com 
     www.http.com 
     http://google.com 
     https://google.com|.map do |e| 
    e.gsub(/\A(?!http)/, "http://") 
end 
#⇒ [ 
# [0] "http://www.google.com", 
# [1] "http://www.http.com", 
# [2] "http://google.com", 
# [3] "https://google.com" 
# ] 
_.map { |e| URI::regexp(%w|http https|) =~ e } 
#⇒ [0, 0, 0, 0] 
関連する問題