.alphanum()
заставляет вашу проверку игнорировать пробелы. Кроме того, когда вы определяете регулярное выражение с помощью нотации конструктора, вы используете строковый литерал, в котором обратные косые черты используются для формирования escape-последовательностей строк и, таким образом, необходимо удвоение для формирования escape-последовательностей регулярных выражений. Однако буквенное обозначение регулярных выражений более удобно. Вместо написания new RegExp('\\d')
вы бы написали /\d/
.
Итак, вы можете использовать это, чтобы разрешить только пробелы:
title: Joi.string().required().max(50), regex(/^\w+(?:\s+\w+)*$/)
Однако вы, похоже, не хотите использовать запятые и разрешать все другие знаки пунктуации.
Используйте
title: Joi.string().required().max(50), regex(/^\s*\w+(?:[^\w,]+\w+)*[^,\w]*$/)
Детали
^
- начало строки
\s*
- 0 или более пробелов (или используйте [^,\w]*
, чтобы сопоставить 0 или более символов, отличных от запятой и слова)
\w+
- 1 или более символов слова (буквы, цифры или _
, если вы не хотите _
, замените на [^\W_]
)
(?:[^\w,]+\w+)*
- ноль или более повторений
[^\w,]+
- 1 или более символов кроме запятой и слова
\w+
- 1 или более символов слова
[^,\w]*
- 0 или более символов, отличных от запятой и слова
$
- конец строки.