Неизвестная escape-последовательность - Регулярное выражение - PullRequest
4 голосов
/ 25 июля 2011

Я хочу проверить текст электронной почты, для которого я использую RegexKitLite.h.Я делаю следующее:

NSString *strEmail = [txtEmail text];
                NSRange range = [strEmail rangeOfRegex:@"^[a-zA-Z][\w\.-]*[a-zA-Z0-9]@[a-zA-Z0-9][\w\.-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z]$"];
                NSLog(@"%@",range);  

Пока я просто проверяю, работает ли это.Но я получаю ошибку во второй строке.Лог ничего не говорит.Но во второй строке есть предупреждение:

Unknown escape sequence '\.'  

В чем может быть проблема?Что-то не так в выражении или есть какая-то другая проблема?

1 Ответ

7 голосов
/ 25 июля 2011

Вам не нужно экранировать точку в классе персонажей.Большинство движков регулярных выражений игнорируют такого рода ошибки, Objective C кажется более строгим.Попробуйте это:

rangeOfRegex:@"^[a-zA-Z][\w.-]*[a-zA-Z0-9]@[a-zA-Z0-9][\w.-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z.]*[a-zA-Z]$"

Однако (и не имеет отношения к проблеме) это довольно странное регулярное выражение проверки электронной почты, поскольку оно отклоняет многие действительные адреса электронной почты и допускает много недействительных.Я не знаю, к чему вы стремитесь, но, как правило, лучше не слишком строго проверять регулярные выражения, а выполнять проверку, отправляя электронное письмо на этот адрес и проверять, не получится ли это.

...