Где ошибка в регулярном выражении?
Не помню, как в JS, но в PHP точно должно быть \s.

И - (тире) должен быть последним символом в строке, то есть после него должна идти уже закрывающая скобка, либо надо ескейпить \-. А в таком виде тире говорит все символы от "/" и до "_", включительно, а это не много ни мало 49 символов, в том числе и "@" (см. таблицу ASCII).

P.S. И символ ^ (каретки) у вас именно разрешён, прямо в самой строке.
Я сделал вот такой вариант: /^[a-zA-Z\p{Cyrillic}0-9\/_.,!)(?\s\-]+$/u
И он в PHP7 вроде правильно работает.
Я тут эксперта пригласил, может он свой вариант предложит.