RE the regex variant: there is no such thing as a "standard" when it comes to regexes. You have actually answered the question by saying that you are using PHP as this uses the PCRE regex library and that defines what the capabilities are. Another common variant is the .NET regex which is available on the Windows platforms. Some users are working in a unix shell using tools such as awk, sed, grep and the like. Each of these has its own set of capabilities both in terms of the regex pattern operators it interprets as well as functionality such as callback routines.
In your case, PHP would allow you to define a callback function that is called each time the "replace" regex function makes a match; the function is also able to return the string that can be used to replace the matched characters. Therefore you will need to write the callback function according to the rules for the parameters and return value (see the PHP documentation as I have not done this myself) and reference this in the "replace" statement along with the pattern you need to do the matching in the first place. The callback function can take the matched digits, use the string functions to reverse their order and then return them as the replacement string.
I think you may have misunderstood what I was trying to say when i talked about the other characters that might surround the target digits. The pattern I suggested will ONLY find digits if they are both preceded and followed immediately by the opening and closing square brackets. Therefore the other situations you mention (leading double quotes or slashes etc.) will not be matched by this pattern. What I was trying to say is that if you DO need these matched (and therefore have the digits reversed) then you will need to modify the pattern to ALSO match in those cases. From what I can see you don't and so no changes will be needed.
On the other hand, if there could be whitespace between the brackets and the digits (as in "[ 123 ]" then this will also be missed by my pattern but this can be overcome if this situation occurs within your text.
Not that is makes any practical difference, but if you want that there must be 2 or more digits, the you can use the syntax '\d{2,}' instead of '\d\d+'. In this case there is not much difference but if you wanted to say "3 or more digits", then "\d\d\d+' starts to get messy and it is easy to get lost as to the minimum number, whereas '\d{3,}' makes this very clear.
Susan