Elisp regular expressions are case insensitive by default, so they should match uppercase letters too.
To just add a dash, you could simply put that into the second group. So [a-z0-9-]
, you don’t have to escape it because it can’t be a range operator if it’s at the end of the group. The same goes for any other character you want to match.
You could also use [\\w. _-]
(notice the literal space between the dot and the underscore). The \w
is a shorthand for A-Za-z0-9
. This should match all valid filenames as long as they don’t contain letters with diacritics.