verify input string is valid decimal number
<p>Can anybody provide an algorithm that checks whether an input string is a decimal number in correct shape and form?</p>

<p>Rules of correct shape and form:</p>

<ol>
<li>At most two decimal places.</li>
<li>For all practical purposes, the largest number is 99,999,999.99</li>
<li>The integral part can use a space, or a comma, or a dot for a group separator.</li>
<li>The decimal part can use a comma, or a dot for a separator.</li>
</ol>

<p>Examples of correct shape and form:</p>

<pre>
1,234,567.89   // English style
1.234.567,89   // French style
1 234 567,89   // German style
1234567.89     // English mathematical style
1234567,89     // European mathematical style
12.00
12.0
12
</pre>

<p>Please, resist your temptation to propose Decimal.Parse or Decimal.TryParse. Either method merrily accepts strings such as “1,2,3,4”, which is not what I want.</p>
