2015-05-15 31 views
0

返回0,我有一個無效的URL,我想驗證是無效的,但是,Ruby的URI是說,它是有效的:URI.parse無效URL

url = "https://blah.%20wordpress.com/" 
# => "https://blah.%20wordpress.com/" 
url =~ URI::DEFAULT_PARSER.regexp[:ABS_URI] 
# => 0 

有我確認的方式這是無效的?

+0

從我的[RFC 3986第2.1節]的讀取(https://www.ietf.org/rfc/rfc3986.txt),'因爲它的編碼爲%20'是有效的。它「看起來」不好是一個不同的問題。有些討論認爲Ruby的URI不太準確,並且對於你應該使用[Addressable :: URI](https://github.com/sporkmonger/addressable)的更嚴格的規範實現。 –

回答

2

嘗試URI::DEFAULT_PARSER.regexp[:UNSAFE]

url = "https://blah.%20wordpress.com/" 
url =~ URI::DEFAULT_PARSER.regexp[:UNSAFE] 
# => 13 

safe_url = "https://blah.wordpress.com/" 
safe_url =~ URI::DEFAULT_PARSER.regexp[:UNSAFE] 
# => nil 
+0

非常感謝! – Edmund