Ho questo regex di lavoro quando prova in PHP, ma non funziona in Objective C:Come scrivere le espressioni regolari nell'obiettivo C (NSRegularExpression)?
(?:www\.)?((?!-)[a-zA-Z0-9-]{2,63}(?<!-))\.?((?:[a-zA-Z0-9]{2,})?(?:\.[a-zA-Z0-9]{2,})?)
ho cercato la fuga i caratteri di escape, ma questo non aiuta neanche. Dovrei sfuggire a qualsiasi altro personaggio?
Questo è il mio codice in 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);
}
- AGGIORNAMENTO -
Questa regex rendimenti (in PHP) l'array con i valori "domain-name" e "tld.tld2" ma in Objective C ottengo un solo valore: "dominio-name.tld.tld2"
- UPDATE 2 -
'nome di dominio' Questa regex estratti e 'TLD' dalla stringa:
- domain.com = (dominio, com)
- domain.co.uk = (dominio, co.uk)
- -test-domain.co.u = (test-domain, co)
- -test-domain.co.uk- = (test-domain, co.uk)
- -test-domain.co.uk = (test-domain, co)
- -Test-domain.co- m = (dominio-test)
- -test-domain-.co.uk = (dominio-test)
prende il nome di dominio valido (non inizia o termina con '-' e tra 2 e 63 caratteri) e fino a due parti di un TLD se le parti sono valide (almeno due caratteri contenenti solo lettere e numeri)
Spero che questa spiegazione aiuti.
convalida e-mail? – Hiren
forse questo aiuta? http://stackoverflow.com/questions/5478170/regular-expression-in-ios – dom
Penso che Dino stia chiedendo come convertire la regex esistente nel codice ObjectiveC. Non importa cosa fa la regex. –