我试图在字符串中找到货币,例如“NTE $ 22,539,420.00”
我尝试使用几个正则表达式,包括^\s*[\+-]?\s?\$?\s?(\d*\.?\d{2}?){1}$
,但它们似乎都不起作用。有没有人有任何建议或理由说明上述原因无效。
谢谢, 吉姆
答案 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)
正则表达式的第一部分匹配字符串的开头,后跟零个或多个空格,后跟可能是符号,后跟可能是'$'......然后是一些数字。你的字符串的“NTE”部分没有任何适应性。此外,我看不到您的货币格式的逗号。
匹配浮点可能有点棘手。不要忘记$ .02等可能性。
答案 4 :(得分:0)
偶然发现这个老帖子......
按照this post中的建议使用\p{Sc}
。