How to write regexp literal in match expression?

It's best to put it in a variable, as recommended by the Bash reference manual 3.2.4.2 Conditional Constructs:

Storing the regular expression in a shell variable is often a useful way to avoid problems with quoting characters that are special to the shell. It is sometimes difficult to specify a regular expression literally without using quotes, or to keep track of the quoting used by regular expressions while paying attention to the shell’s quote removal. Using a shell variable to store the pattern decreases these problems.

However in order to write it directly inside of the bash extended test you need to remove the quotes and escape the spaces:

$ [[ ' 123 ' =~ ^\ [0-9]+\ $ ]]; echo $?
0

In bash, the canonical answer is: use a var

$ reg='^ [0-9]+ $'
$ [[ ' 123 ' =~ $reg ]]; echo $?

That works for spaces, backslash, and many other things:

$ reg='^ 12\3 $'
$ [[ ' 12\3 ' =~ $reg ]]; echo $?
0

If you want to write it as a literal you need to play (carefully) with quoting.
You need to quote the parts that need to be literal and leave the parts that should be interpreted as a regex un-quoted. The space needs quoting. Here using backslah:

$ [[ ' 123 ' =~ ^\ [0-9]+\ $ ]]; echo $?
0

And here using double quotes:

$ [[ ' 123 ' =~ ^" "[0-9]+" "$ ]]; echo $?

But that "quoting" gets real messy with things like a backslash:

$ [[ ' 12\3 ' =~ ^" "[0-9]+"\\"[0-9]+" "$ ]]; echo $?
0

Simpler, safer:

$ reg='^ [0-9]+\\[0-9]+ $'
$ [[ ' 12\3 ' =~ $reg ]]; echo $?
0

And, no, you don't need a subshell to do that (the parenthesis in your question).

$ reg='^ [0-9]+\\[0-9]+ $'; [[ ' 12\3 ' =~ $reg ]]; echo $?

Yes, that may seem annoying. And, yes, the command you presented happens to work in zsh:

$ [[ ' 123 ' =~ '^ [0-9]+ $' ]]; echo $?
0

But quoting is always a problem (in any shell), what should happen to backslash ?:

% [[ ' 12\3 ' =~ ' 12\3 ' ]]; echo $?
zsh: failed to compile regex: Invalid back reference
1


% [[ ' 12\3 ' =~ '^ [0-9]+\\3 $' ]]; echo $?
0

Double it !. It is not exactly: literal.