Выйти из дефиса с помощью \-
является правильным способом.
Я проверил, что выражение /^[a-zA-Z0-9.\-_]+$/
действительно позволяет дефисы. Вы также можете использовать класс \w
, чтобы сократить его до /^[\w.\-]+$/
.
(Включение дефиса последнего в выражении фактически заставляет его не требовать экранирования, так как тогда он не может быть частью но вы все равно можете привыкнуть к тому, чтобы всегда избегать его.)