The amsmath environments [pbBvV]?matrix use a common \env@matrix macro to start the alignment. In this macro there is \array{*\c@MaxMatrixCols c}, which centers the contents of the cells by default. One quick way to change that default globally is to redefine that macro with r instead of c, or load etoolbox and do \patchcmd\env@matrix{c}{r}{}{}.
Alternatively, you can redefine \env@matrix to take an argument for the alignment, and patch the environments which use it to check for such optional argument. This is essentially what mathtools's starred environments do.
In the code below I used a loop to patch all the environments in one go (with a single default), but you can change them selectively if you want different behaviours.
Also, if you use a right aligned cell, then the numbers will be right aligned (thanks, Sherlock), and if two numbers have different widths (say, -1 and -12), then their rightmost end will be aligned, not the minus signs. To align the minus sign you can use the J column type defined (and not defined) in Schrödinger's cat's answer.

\documentclass{article}
\usepackage{amsmath}
\usepackage{array}
\usepackage{etoolbox}
\makeatletter
\def\env@matrix[#1]{\hskip -\arraycolsep
\let\@ifnextchar\new@ifnextchar
\array{*\c@MaxMatrixCols #1}}
\@tfor\@temp:=\matrix\pmatrix\bmatrix\Bmatrix\vmatrix\Vmatrix\do
{\expandafter\patchcmd\@temp
{\env@matrix}
{\@ifnextchar[%] default V
\env@matrix{\env@matrix[J]}}
{}{\FAILED}}
% From Mr. Cat's answer: https://tex.stackexchange.com/a/522747/134574
\newcolumntype{J}{>{\CheckSign}l}
\def\CheckSign\ignorespaces{%
\@ifnextchar-{}{\@ifnextchar+{}{\phantom{-}}}}
\makeatother
\begin{document}
\[
\begin{bmatrix}
1&1&-1\\
-1&1& 1\\
1&-1&-12\\
1&-1&+12
\end{bmatrix}
\]
\end{document}
\begin{bmatrix*}[r] ... \end{bmatrix*}, defined bymathtools? – Bernard Jan 02 '20 at 22:02\begin{bmatrix}... \end{bmatrix}as\begin{bmatrix*}[r] ... \end{bmatrix*}? – Jan 02 '20 at 22:27