Пробовал с [^-][^0-9]$
, но это также исключает d9 или -а. Я бы хотел, чтобы это работало только с -1, -2, -3 и т. д.
Вы можете использовать регулярное выражение NFA с поддержкой просмотра назад, например
$(?<!-[0-9])
Он соответствует концу строки, которому непосредственно не предшествует -
+ цифра.
Вариант этого
^(?!.*-[0-9]$)
^(?!.*-[0-9]$).*
Если вы имеете дело с механизмом регулярных выражений POSIX (здесь ERE), вы можете использовать
^(.*([^-].|.[^0-9])|.)$
См. эта демонстрация регулярных выражений. Подробности:
^
- начало строки(
- старт группы:
.*
- любой ноль или более символов([^-].|.[^0-9])
- либо символ, отличный от -
, а затем любой один символ, либо любой одиночный символ, а затем любой символ, кроме цифры|
- или
.
- любой символ)
- конец группы$
- конец строки.