Пробел после точки или запятой в регуляярном выражении

Есть гугл форма с проверкой текста в ответе с помощью регулярно выражения. Сейчас оно проверяет, чтобы в ответе использовался только английский язык и цифры, пробелы, двоеточия, тире, двойные кавычки, точки, запятые, восклицательный и вопросительные знаки и скобки. Кроме этого заставляет начинать ответ с заглавной буквы или цифры, а заканчивать точкой или знаками '!?'. А как сделать так, чтобы точка или запятая в тексте использовались только с пробелом после них?

^[A-Z0-9][0-9a-zA-Z\s:\-".,!?()]*[\.!?]$

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

Автор решения: Wiktor Stribiżew

Используйте

^[A-Z0-9]([0-9a-zA-Z\s:"!?()-]|[.,]\s)*[.!?]$

Подробности

  • ^ - начало строки
  • [A-Z0-9] - буква или цифра из набора символов ASCII
  • ( - начало захватывающей подмаски:
    • [0-9a-zA-Z\s:"!?()-] - буква или цифра из набора символов ASCII, пробельный символ или один из символов :"!?()-
    • | - или
    • [.,]\s - точка или запятая, после которых следует один пробельный символ
  • )* - конец подмаски, ноль или более повторов
  • [.!?] - ., ! или ?
  • $ - конец строки.
→ Ссылка