/^[a-zA-Z0-9 !-?\(\):&,;\+]+$/
- не приятно, где вы его разместили!Если вы хотите поместить - внутри класса символов, обязательно поместите его первый или последний например
/^[a-zA-Z0-9 !?\(\):&,;\+-]+$/
В противном случае он будет принимать диапазондо тех пор ?каким бы ни был этот диапазон ... Зависит от вашей машины регулярных выражений.
Наконец, специальные символы не являются специальными внутри классов символов.Поэтому не нужно спасаться от большинства из них:
/^[a-zA-Z0-9 !?():&,;+-]+$/