Вам нужно будет добавить границы для этого регулярного выражения.
'[- a-z0-9] *' говорит: сопоставляйте эти символы 0 или более раз в любом месте строки.
Таким образом, добавление символов начала и конца строки в регулярное выражение сделает то, что вы ищете:
regex='^[-a-z0-9]*$'
Следующим шагом является ограничение количества вхождений символа «-» только один раз. Может ли пунктирная черта появляться в начале или в конце строки? Если нет, попробуйте:
regex='^[a-z0-9]*-?[a-z0-9]*$'
Надеюсь, это поможет.