2011-06-02 48 views
0

我試圖使用正則表達式驗證URL鏈接,但並非所有鏈接都被完全識別。你能幫我解決嗎?驗證iPhone上的URL

我想要的鏈接,遵循的模式:

http://www.abcdef.org/xyz/content.aspx?menu id=190&id=3214 
+2

定義'驗證'。換句話說,你是否只是想確保目標是合法的URI還是符合特定的模式?並且爲了記錄,您提供的示例URI不合法,因爲它包含未轉義的空間。 – 2011-06-02 20:22:20

+0

嘿,對不起menu_id。和url驗證應該接受所有模式 – RKK 2011-06-21 19:29:33

回答

1

假設你正在尋找一個正則表達式來與特定的模式相匹配的網址:

您可以使用這樣的匹配http://www.abcdef.org/xyz/content.aspx?menu id=190&id=3214

http://.*?/[a-zA-z]+/content.aspx\?menu id=\d+?&id=\d+ 
+0

thanx爲您的答覆,但你能告訴我如何去更通用的模式,它可以識別任何模式的網址。 – RKK 2011-06-21 19:28:48

0

Regex for url with port in Objective c

如果沒有端口號,效果很好。

-(BOOL) validateUrl: (NSString *) candidate { 

NSString *urlRegEx = @"^(http|https|ftp)\://(([a-zA-Z0-9-.]+\.[a-zA-Z]{2,3})|([0-2]*\d*\d\.[0-2]*\d*\d\.[0-2]*\d*\d\.[0-2]*\d*\d))(:[a-zA-Z0-9]*)?/?([a-zA-Z0-9-._\?\,\'/\+&%\$#\=~])*[^.\,)(\s]$"; 
NSPredicate *urlTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", urlRegEx]; 
return [urlTest evaluateWithObject:candidate]; 
}