Я хочу проверить строку в объективе C на основе следующих правил:Цель c регулярное выражение для полного имени
1) Никаких номеров и специальных символов не допускается.
2) Строка не должна начинаться с пробела.
3) Строка не должна заканчиваться пробелом.
4) Любое количество слов допускается в строке.
5) Между двумя последовательными словами допускается только одно пространство.
В настоящее время я использую следующий код:
NSString *nameRegex = @"[A-Za-z]+[[\\s][A-Za-z]+]*";
NSPredicate *nameTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", nameRegex];
bool isCheckStringValid = [nameTest evaluateWithObject:checkString];
Однако это не удовлетворяет 3-й и 5-й fules. Я пробовал это в течение часа, но не повезло. Может ли кто-нибудь предложить мне правильное регулярное выражение? Благодарю.
попробовать^[A-Za-Z] + ([\ s] [A-Za-г ] +) * $ –
Вы делаете огромное предположение, что полное имя человека - это всего два набора «нормальных» символов, разделенных пробелом ... Существует много культур, где полные имена больше двух слов, и многие из них используются специальные символы (при условии, что ваши «специальные символы» включают такие вещи, как üøéî и т. д.) – Jasarien
[Программисты Falsenesss верят в имена] (http://www.kalzumeus.com/2010/06/17/falsehoods-programmers-believe-about -names /) – Abizern