Это зависит от ваших требований. Когда вы имеете дело с регулярным выражением, трудно быть уверенным, что пунктуация на одном языке не является допустимым символом на другом. Если вы просто пытаетесь не допустить случайно введенный текст из вашей базы данных, я бы запустил это регулярное выражение через JavaScript и спросил бы пользователя, уверены ли они, что они ввели правильную информацию, если регулярное выражение находит вещи, которые не похожи на символы. Затем у пользователя есть выбор: отправлять или корректировать свое имя. Это заставляет пользователя перепроверять свою работу только в небольшом количестве обстоятельств, при которых существует высокая вероятность того, что они ввели нетекст, что не раздражает подавляющее большинство пользователей, но позволяет небольшому меньшинству с проблемными именами не застрять не удается правильно ввести их имя из-за того, что ваш код удаляет символы.
Это кажется мне лучшим подходом, поскольку вы уже храните юникод, поэтому ничто не должно нарушаться, если пользователи вводят что-то, что, по вашему мнению, может быть пунктуацией, но на самом деле это не так, и если один пользователь решает злонамеренно вводить знаки препинания кажутся низкими (зачем кому-то это делать?). Кроме того, вы можете сделать отдельное регулярное выражение на стороне сервера со стандартной пунктуацией [,.!? и т.д ...], что вы не хотите допускать ни при каких обстоятельствах.
Наконец, вы также можете добавить капчу, чтобы блокировать спам-ботов, пытающихся злонамеренно вводить плохие имена.