я думаю более элегантное и более ЧИТАЕМОЕ решение это просто сделать три проверки: 1) строка не содержит пробелов (можно через .indexOf) 2) первый символ не _ и не - (str[0] !== …) 3) последний символ не _ и не - (str[str.length - 1] !== …)
получившаяся выше регулярка будет хуже читаться чем три очевидные проверки. Или используйте регулярку и пишите к ней комментарий что она делает )