Создал файл, добавил туда 2 строки Иванов Иван Иванович 31 12 1987 Анна-Надежда 15 5 2013 Запустил, перед этим переопределил toString в классе People. Вывел на консоль
[Person{name='Анна-Надежда', birthDate=Wed May 15 00:00:00 ALMT 2013},
Person{name='Иванов Иван Иванович', birthDate=Thu Dec 31 00:00:00 ALMT 1987}]
Добавляется судя по выводу правильно. Еще попробовал с такими строками Иванов Иван Иванович 31 12 1987 Анна-Надежда-Анна 15 5 2013 Вывод в консоль такой
[Person{name='Анна-Надежда-Анна', birthDate=Wed May 15 00:00:00 ALMT 2013},
Person{name='Иванов Иван Иванович', birthDate=Thu Dec 31 00:00:00 ALMT 1987}]
Судя по этому выводу имя тоже правильно добавлено. После имени нет пробелов. Если в блоке при добавлении имени написать
s.substring(0, matcher.start() - 1).replaceAll("\\s+", " ");
на случай, если присутствует несколько пробелов между именем состоящим из нескольких слов, то все равно валидатор пишет, про имя Анна-Надежда.
if (matcher.find()) {
    nameAndBdOfAperson.put(s.substring(0, matcher.start() - 1), s.substring(matcher.start(), matcher.end()));
}