Это должно сделать это:
^\s*([\w,\?;:!"£$%]\s*){1,2046}$
Обратите внимание, что это вообще не ограничивает длину ввода, оно только ограничивает количество непробельных символов.
Чтобы ограничить длину, вы можете использовать положительный прогноз, который соответствует только определенному диапазону длины:
^(?=.{1,2046}$)\s*([\w,\?;:!"£$%]\s*)+$
(Верхний предел количества символов, не являющихся пробелами, не имеет смысла, если он равен длине. +
- это сокращение от {1,}
, требующее хотя бы одного символа, не являющегося пробелом.)