Регулярное выражение: не более 2 пробелов между словами

Есть простой RegExp [а-яёА-ЯЁ]{0,1}[\sа-яёА-ЯЁ.\-]{1,}, который первым символом принимает только буквы, а дальше любые символы и буквы.

Как запретить ввод 2 подряд идущих пробелов между словами?


Ответы (2 шт):

Автор решения: SyntaxErrorLineNULL

input { box-sizing: border-box; width: 60%; border: 1px double; outline: none; }
:valid { border-color: orange; }
:invalid { border-color: red; }
<input pattern="^((?!\s{2}).)*$" autofocus>
→ Ссылка
Автор решения: Wiktor Stribiżew

Используйте

 /^[а-яёА-ЯЁ]+(?:\s[а-яёА-ЯЁ.-]+)*$/

См. пример работы выражения

Подробности

  • ^ - начало строки
  • [а-яёА-ЯЁ]+ - 1 и более русских букв
  • (?:\s[а-яёА-ЯЁ.-]+)* - 0 и более повторов
    • \s - 1 пробельный символ
    • [а-яёА-ЯЁ.-]+ - 1 и более русских букв, точек или дефисов
  • $ - конец строки

Если пробелы, точки и дефисы не могут следовать друг за другом, используйте

/^[а-яёА-ЯЁ]+(?:[\s.-][а-яёА-ЯЁ]+)*$/
→ Ссылка