sed replace braces with brackets keeping content inside

Took me a minute to figure this out but it works.

Given the following string, I want to replace { and } with [ and ] keeping each number inside and only with a number inside the braces without space and without letters.

data.txt :

{1}: Today is tomorrow's yesterday.
{2}: This year is next year's yesteryear.
{3}: Foo
{10}: Bar
{100}: Baz
{91919}: Qux
{99119a9}: 42


sed -e 's/{\( **[0-9]\+** \)}/[\1]/ data.txt


rjk@debian:~$ sed -e 's/{\([0-9]\+\)}/[\1]/' data.txt
[1]: Today is tomorrow's yesterday.
[2]: This year is next year's yesteryear.
[3]: Foo
[10]: Bar
[100]: Baz
[91919]: Qux
{99119a9}: 42
{1 2 3 4 5}: infinity and beyond.

If I want to replace anything in the braces, then I could alter the command slightly.

sed -e 's/{\( **.*** \)}/[\1]/ data.txt


rjk@debian:~$ sed -e 's/{\(.*\)}/[\1]/' data.txt
[1]: Today is tomorrow's yesterday.
[2]: This year is next year's yesteryear.
[3]: Foo
[10]: Bar
[100]: Baz
[91919]: Qux
[99119a9]: 42
[1 2 3 4 5]: infinity and beyond.