We already dicussed this yesterday, but for the record:

> Try to parse "US$100".
We do not plan to support currencies. Yes, the pattern does allow for nonsense-units like a-²°. This is just for splitting the string, validation of the individual parts comes later.

I agree that this needs to become more flexible, so we can allow units to be placed before values.

> Having the +/- outside the number pattern is strange.
The +/- is the separatore between the amount and the margin of uncertainty. It's not the sign of the amount.

> In math +/-0, +0 and -0 are different things (not sure if Wikibase can store these at the moment).
The above pattern allows for +0, -0, as well as -55+/-0, which is what we need.

> Unicode minus character is missing.
This is covered by the unlocalizer, it should not be covered here.

> Forcing /u(ngreedy) is not needed and bad for overall performance.
/u is "unicode", /U is "ungreedy".

> Concatenating regular expressions like that is bad practice. Sorry to say that, but that's what I learned from doing such things over the years.

You definitly have to be careful when doing it. The alternative would be to implement an actual lexer, which would have to be localizable. I don't think that's worth the effort right now. But if you think it's important, please file a feature request.