Пусть валидатор возвращает true/false вместо корректное_значение/false:
const validator = (value, maxSize) =>
!(/[^а-яА-Яa-zA-Z0-9\s]/.test(value) || value.length > maxSize);
Соответственно, setTitle вызывайте только в случае true:
if (validator(value, maxSize)) {
setTitle(value);
}
Если же вам всё-таки необходимо, чтобы валидатор возвращал значение инпута, то он должен получать не только то, которое проверяет, но и какое-то дефолтное корректное, чтобы было что вернуть в случае отрицательного результата проверки:
const validator = (defaultValue, value, maxSize) =>
(/[^а-яА-Яa-zA-Z0-9\s]/.test(value) || value.length > maxSize)
? defaultValue
: value;
setTitle(prevValue => validator(prevValue, value, maxSize));