This may very well be intended behavior, but I expected the sorting to basically follow https://en.wikipedia.org/wiki/List_of_Unicode_characters#Latin_script where that first block of punctuation and symbols (!, #, -) sorts before numbers, but it seems numbers get sorted in front of everything.
Perhaps this is just how things need to work to support the natural number sorting?