2012-09-26 3 views
-4

Je souhaite valider l'URL avec port, donc j'ai besoin d'une expression régulière pour la valider. Actuellement j'utilise cette expression.URL avec objectif de validation de port-c

NSString *urlRegEx [email protected]"(?i)(?:(?:https?|http):\\/\\/)?(?:\\S+(?::\\S*)[email protected])?(?:(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[1-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z\\u00a1-\\uffff0-9]+-?)*[a-z\\u00a1-\\uffff0-9]+)(?:\\.(?:[a-z\\u00a1-\\uffff0-9]+-?)*[a-z\\u00a1-\\uffff0-9]+)*(?:\\.(?:[a-z\\u00a1-\\uffff]{2,})))(?::\\d{2,5})?(?:\\/[^\\s]*)?"; 

mais il ne valide pas parfois.

Répondre

2

Voilà comment je le ferais:

Prenons un URL:

https://some.long.domain.with.subdomains.com:12345/otherpath?queryparam=queryvalue

Nous allons initialiser NSURL avec cette chaîne:

NSURL *url = [NSURL URLWithString:theStringFromAbove]; 

Si URL est invalide, la variable url sera nulle. Sinon, prenez un port et vérifier si elle est ce que nous avons besoin:

if (!url || [url port] != 12345) { 
    NSLog(@"YOU SHALL NOT PASS"); 
} 
+0

ce que id mon URL contient par exemple ip http://192.168.0.123:8081/service/service.asmx –

+0

Que dois-je faire en cas est ip comme dans mon commentaire ci-dessus. –

+0

Lire la documentation de la classe 'NSURL'. l'adresse IP sera accessible via la propriété 'host' de l'objet. – Eimantas