Yup at the end it's valid too. Arguably [- ._] is smarter if someone decides to add something. And an escape [ ._\-] is even better, but that doesn't work in all regex flavors.
But for .net any of these have the same meaning.