Используя синтаксис регулярных выражений Oniguruma, вы можете сделать что-то вроде:
^[\w\.:\(\)\[\]{}\-_](?: ?[\w\.:\(\)\[\]{}\-_])*$
Предполагая, что «другие символы». : () [] {} - _
Это регулярное выражение будет соответствовать строке, которая должна начинаться и заканчиваться символом слова или одним из других разрешенных символов и не может содержать более одного пробела в строке.
Если вы используете флаг x
(игнорируйте пробелы в регулярном выражении), вам нужно сделать это вместо этого:
^[\w\.:\(\)\[\]{}\-_](?:\ ?[\w\.:\(\)\[\]{}\-_])*$
Единственное отличие - \
перед пробелом.