Obtendo um intervalo de caracteres ilegal na regex: java

Eu tenho um padrão de regex simples que verifica nomes. Mas quando eu o executo, recebo um erro de intervalo de caracteres ilegal. Eu pensei em escapar "\ s" que vai permitir um espaço, mas o compilador ainda está reclamando.

public boolean verifyName(String name) {
    String namePattern = "^[\\p{L}]++(?:[',-\\s][\\p{L}]++)*+\\.?$";
    return name.matches(namePattern);
}

e esse é o erro que eu acho que não deveria estar ocorrendo, já que um nome pode conter um desses[',-\\s]

Então, onde eu não estou entendendo?

questionAnswers(1)

yourAnswerToTheQuestion