\)-_
Это приводит к тому, что класс символов включает все символы от )
до _
, т.е. )*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_
. 3
находится в одном из них.
-
должен быть помещен в начало или конец, чтобы он не считался специальным символом. Кроме того, кроме \
, [
, ]
и /
, нет необходимости экранировать что-либо в классе символов.
/[-!"£$%^&*()_+=\[\]{};:@'#\\|<,.>\/?]/
(Технически [
тоже не нужно экранировать, но для согласованности я предпочитаю избегать его. Кроме того, вы могли бы сопоставить -
в середине, если вы избежали его \-
.)