Uso:
REGEXP='^[abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0-9-]+$'
Para selecionar quais caracteres você deseja. O que é correspondido por [a-z] só é garantido como [abcdefghijkmnopqrstuvwxyz] no código do idioma C / POSIX.
(suponho que você não queira que a barra invertida seja incluída, mas que \ foi uma tentativa equivocada de escapar do - ).
Outra opção é corrigir a localidade para C antes de usar a ferramenta que avalia que ^[a-zA-Z0-9-]+$ estendido regexp (ou ^[[:alnum:]-]+$ ), como:
LC_ALL=C grep -Ee "$REGEXP"
Isso é válido neste caso, mas não em casos como REGEXP='[A-Z]' no caso de os dados para corresponderem ao regexp estarem em um conjunto de caracteres como BIG5-HKSCS ou GB18030 (e em locais que usam esse mesmo caractere) onde muitos caracteres codificações que contêm a mesma codificação que as de A-Z .
Exemplo em que [A-Z] corresponde a Á (U + 00C1, codificado como 0x88 0x57 em BIG5-HKSCS (em que 0x57 também é W )):
$ LC_ALL=zh_HK.big5hkscs REGEXP='[A-Z]' bash -c 'printf "\uc1\n" |
LC_ALL=C grep -qe "$REGEXP" && echo match'
match