Имеется регулярное выражение:
^[а-яё?\s]+$
Как дополнить эту регулярку, чтобы в начале и в конце обрезались пробелы, а внутри слова пробел допускался? Т.е "Иван Иванов" - пропускаем, "Иван Иванов " - не пропускаем?
Предлагаю разобрать символьный класс на пробелы и всё остальное и сложить такое выражение:
/^[а-яё?]+(?:\s+[а-яё?]+)*$/i
или (если разрешен только 1 пробел между словами):
/^[а-яё?]+(?:\s[а-яё?]+)*$/i
См. демо.
Оно найдёт:
^ - начало строки[а-яё?]+ - 1 и более русских букв(?:\s[а-яё?]+)* - 0 и более:
\s+ - 1 и более пробелов (удалите +, если разрешен только 1 пробел между словами)[а-яё?]+ - 1 и более русских букв$ - конец строкиИспользуйте .trim(); Оригинальную строку не изменяет. Поддерживается везде.
var str = " temp ";
str.trim();
Есть еще:
jQuery.trim();
Вот так можно:
^(?:[^ ][а-яё?\s]+[^ ]?|[^ ]?[а-яё?\s]+[^ ])$
Если отвечать на вопрос, то так
^[^\s][а-яё?\s]*[^\s]$
Но может лучше вызвать trim()?
Сборка персонального компьютера от Artline: умный выбор для современных пользователей