J'ai cette regex de travail quand je l'ai tester en PHP mais il ne fonctionne pas en Objective-C:
(?:www\.)?((?!-)[a-zA-Z0-9-]{2,63}(?<!-))\.?((?:[a-zA-Z0-9]{2,})?(?:\.[a-zA-Z0-9]{2,})?)
J'ai essayé d'échapper les caractères d'échappement mais ça n'aide pas non plus. Dois-je échapper à tout autre personnage?
C'est mon code en Objective-C:
NSMutableString *searchedString = [NSMutableString stringWithString:@"domain-name.tld.tld2"];
NSError* error = nil;
NSRegularExpression* regex = [NSRegularExpression regularExpressionWithPattern:@"(?:www\\.)?((?!-)[a-zA-Z0-9-]{2,63}(?<!-))\\.?((?:[a-zA-Z0-9]{2,})?(?:\\.[a-zA-Z0-9]{2,})?)" options:0 error:&error];
NSArray* matches = [regex matchesInString:searchedString options:0 range:NSMakeRange(0, [searchedString length])];
for ( NSTextCheckingResult* match in matches )
{
NSString* matchText = [searchedString substringWithRange:[match range]];
NSLog(@"match: %@", matchText);
}
-- UPDATE --
Cette expression renvoie (en PHP) le tableau avec les valeurs de "nom de domaine" et "tld.tld2" mais en Objective C-je obtenir une seule valeur: "nom-de-domaine.tld.tld2"
-- 2 --mise à JOUR
Cette regex extraits "nom de domaine" et " TLD " de la chaîne:
- domain.com = (domaine, com)
- domaine.co.uk = (domaine, co.royaume-uni)
- -test-domain.co.u = (test-domain, co)
- -test-domain.co.royaume-uni- = (test-domain, co.royaume-uni)
- -test-domain.co.uk = (test-domain, co)
- -test-domain.co-m = (test-domain)
- -test-de-domaine -.co.uk = (test-domain)
il prend le nom de domaine valide (pas de départ ou de fin avec '-' et de 2 à 63 caractères de long), et jusqu'à deux parties d'un TLD si les pièces sont valides (au moins deux caractères ne contenant que des lettres et des chiffres)
Espérons que cette explication permet de.