You need to create a new custom python expression in the Field Calculator to extract the numbers and sort them the way you want.
You can use the following expression:
from qgis.core import *
from qgis.gui import *
@qgsfunction(args='auto', group='Custom')
def extract_digits(text_field, feature, parent):
split_text = text_field.split()
num = [int(text) for text in split_text if text.isdigit()]
num_sort = sorted(num)
join_sort = ';'.join(['{}'.format (i,) for i in num_sort])
return join_sort

Then call the function from the custom expression, and use the field name that contains the street names:

Do not forget to select the new field in which the sorted digits will be saved.
The output will be like this:

Update
Based on your comment, I updated the script to take into consideration a semicolon (;)
that comes directly after a number. Please use the following code:
from qgis.core import *
from qgis.gui import *
@qgsfunction(args='auto', group='Custom')
def extract_digits(text_field, feature, parent):
split_text = text_field.split(';')
merge_text = ' '.join(split_text)
split_text = merge_text.split()
num = [int(text) for text in split_text if text.isdigit()]
num_sort = sorted(num)
join_sort = ';'.join(['{}'.format (i,) for i in num_sort])
return join_sort