Вы просите, чтобы за точкой следовала одна или несколько (+) цифр. Просто сделайте трейлинг-код необязательным, изменив его на:
std::regex reg("[A][-+]?([0-9]*\\.[0-9]*|[0-9]+)");
Демо
Единственная проблема с этим выражением состоит в том, что оно также будет соответствовать A, за которым следует одна точка без какой-либо цифры. Я не знаю, увидели ли вы это действительное совпадение. Следовательно, более надежной альтернативой будет:
std::regex reg("[A][-+]?([0-9]*\\.[0-9]+|[0-9]+\\.?)");
То есть либо конечные цифры, либо цифры, за которыми, возможно, следует точка.
Второе демо