Создайте класс символов и вставьте в него все, что вы хотите разрешить
Pattern p = Pattern.compile("^[A-Z0-9\\p{P}\\s]+$");
[A-Z0-9\\p{P}\\s]
это класс символов, который допускает AZ, 0-9, Знаки пунктуации и пробелы.
^
- это якорь для начала строки
$
- это якорь для конца строки
+
- это квантификатор, который позволяет
Более юникодным подходом будет
^[\\p{Lu}\\p{N}\\p{P}\\s]+$
\\p{Lu}
заглавная буква со строчным вариантом.
\\p{N}
любой вид числового символа в любом скрипте.
Для получения дополнительной информации см. здесь, на регулярном-экспресс-сайте