与货币的 .NET 兼容的 RegEx 字符串

RegEx string compatible with .NET for currency

到目前为止,我已经看到了一些关于 Regex 的问题,其中一些非常有帮助,但我在获得我需要的结果时遇到了一些问题...

帮助我学到很多东西的问题之一是这个:Regular expression to match numbers with or without commas and decimals in text

上面问题中给出的表达式是:

(:?^|\s)((?:[1-9]\d{0,2}(?:(?:,\d{3})*|\d*)|0|(?=\.))(?:\.\d*[1-9])?)(?!\S)

它将允许这样的事情:

100,000
999.999
90.0009
1,000,023.999
0.111
.111
0

...而不是:

1,1,1.111
000,001.111
999.
0.
111.110000
1.1.1.111
9.909,888

现在可以了,但我不想允许:

0.111
.111
0

我不想允许超过 2 位小数,所以 100.333 不会被接受,而 100.33 会通过。我也不希望通过任何以 0 开头的内容。

这是我第一次处理正则表达式,我知道 Whosebug 在问我看过的这个问题时给了我一些建议,但我现在真的不明白这一点——如果你能帮助我理解我需要更改什么以及为什么,我将不胜感激。

您可以使用以下内容:

(:?^|\s)((?:[1-9]\d{0,2}(?:(?:,\d{3})*|\d*)|(?=\.))(?:\.\d{0,2})?)(?!\S)
                                           ^              ^^^^^

\d*[0-9]更改为\d{0,2}