.Net正则表达式货币

时间:2011-06-03 15:50:06

标签: c# .net regex vb.net

我试图在字符串中找到货币,例如“NTE $ 22,539,420.00”

我尝试使用几个正则表达式,包括^\s*[\+-]?\s?\$?\s?(\d*\.?\d{2}?){1}$,但它们似乎都不起作用。有没有人有任何建议或理由说明上述原因无效。

谢谢, 吉姆

5 个答案:

答案 0 :(得分:6)

你能直接转储所有格式(小数除外)吗?

string money = "NTE $22,539,420.00";
string scrubbed = Regex.Replace(money, @"[^0-9\.]", string.Empty);

此时,清理包含22539420.00

答案 1 :(得分:3)

您使用^匹配字符串的开头,并且字符串的开头不以任何空格开头。你也没有考虑','字符。

试试这个\ s * [+ - ]?\ s?\ $?\ s?((\ d {1,3},?)+。?\ d {2}?)

答案 2 :(得分:1)

试试这个:

  

^ [^ \ d] +(:[。,] \ d {1,3})+ \ d {2} $

答案 3 :(得分:0)

正则表达式的第一部分匹配字符串的开头,后跟零个或多个空格,后跟可能是符号,后跟可能是'$'......然后是一些数字。你的字符串的“N​​TE”部分没有任何适应性。此外,我看不到您的货币格式的逗号。

匹配浮点可能有点棘手。不要忘记$ .02等可能性。

答案 4 :(得分:0)

偶然发现这个老帖子......

按照this post中的建议使用\p{Sc}