我试图找到货币像“NTE $ 22,539,420.00”串净正则表达式货币
我试图用几个正则表达式,包括^\s*[\+-]?\s?\$?\s?(\d*\.?\d{2}?){1}$
但他们都不工作。有没有人有任何建议或理由为什么上述不起作用。
感谢, 吉姆
我试图找到货币像“NTE $ 22,539,420.00”串净正则表达式货币
我试图用几个正则表达式,包括^\s*[\+-]?\s?\$?\s?(\d*\.?\d{2}?){1}$
但他们都不工作。有没有人有任何建议或理由为什么上述不起作用。
感谢, 吉姆
您可以利用^匹配字符串的开始,你的字符串的开头不与任何空白开始。你也没有考虑','字符。
尝试此\ S * [+ - ]????\ S \ $ \ S(???(\ d {1,3},)+ \ d {2})
您可能想要转义小数位或任何字符在该位置匹配。 – 2011-06-03 16:18:51
对没有小数位的货币有何建议? – Jim 2011-06-03 17:45:07
只需使用正确的语法使十进制可选。 – 2011-06-03 18:06:20
的正则表达式的第一部分匹配字符串的开头,接着是零个或多个空格,接着可能是一个符号,接下来可能是'$'...,然后是一些数字。你的弦乐中“NTE”部分没有任何住宿空间。另外,我没有看到您的货币格式逗号。
匹配浮点可能有点棘手。不要忘记诸如$ .02的可能性。
尝试这一个:
^[^ \ d] +(?:\ d {1,3} [,])+ \ d {2} $
莫非你只需要转储所有的格式(小数除外)就像这样?
string money = "NTE $22,539,420.00";
string scrubbed = Regex.Replace(money, @"[^0-9\.]", string.Empty);
在这一点上,擦洗包含22539420.00
。
这是一个很好的选择 – Jim 2011-06-03 17:20:38
只是偶然发现了这个古老的帖子...
使用\p{Sc}
在this post建议。
所以你想要前三个字符?这些字符串是否在不同的行上? – Lazarus 2011-06-03 15:51:23
因为您的表情在行首不接受字母(例如NTE)。 – 2011-06-03 15:57:56