2010-12-03 104 views
3

我试图从字符串'$ 1,109,889.23'中删除美元格式。我尝试使用一个正则表达式:如何使用正则表达式删除美元格式

"[^\\d]" 

但后来我得到逗号。

任何帮助?提前致谢。

+1

您正在使用什么语言,你叫什么相关的功能?在某种`replaceAll()`方法中使用它可能会很好(虽然它也会删除小数,所以``[^ \ d。]`可能会更好)。对于这个问题,你是否也试图删除逗号?我从你说的这个话的方式不太确定。 – eldarerathis 2010-12-03 18:29:21

+0

我正在使用ColdFusion。 [^ \ d。]很棒! – CFNinja 2010-12-03 18:40:34

回答

2

我使用ColdFusion。 [^ \ d。]的效果与eldarerathis上面提到的一样。

<cfset amt = '$1,109,889.23'> 
    <cfset newAmt = ReReplace(amt, "[^\d.]", "","ALL") > 
    <cfoutput>#newAmt#</cfoutput> 
0

由于$是正则表达式中的元字符(意思是“字符串结尾”或“行尾”,取决于当前设置),因此需要将其转义为\$。但是,如果只有一个固定字符,为什么要使用正则表达式呢?

+0

取决于正则表达式引擎!在JS中`$`的转义是`$$`。 – Rudu 2010-12-03 18:30:56

+0

什么是JS?我从来没有见过任何地方使用过$$。但之后我没有看到一切。 – 2010-12-03 18:33:06

2

只是做一个搜索并取代,$

但如果你打算这么做。

[^\d.]+

+0

我知道,我不得不以艰难的方式去做。 – CFNinja 2010-12-03 18:43:45

+0

不要忘记负面... – 2017-04-17 15:51:55

0

[\d,.]+会给你的数字部分。 Here是Rubular上的例子。

0

我不确定我是否确切地理解您想要的内容,但在您的示例中,您似乎希望以“1,109,889.23”结尾。如果是这种情况,为什么不简单地选择使用[\d,.\x20]+(注意句点不会被转义,因为它是在字符集中,并且注意\ x20选择空格,如果它们使用逗号而不是逗号)来选择数。如果您想选择不属于该数字的所有内容,如您的示例所示,那么您只需搜索[^\d,.\x20]。这将适用于任何货币格式,而不仅仅是使用美元符号的货币格式。它还将允许多种类型的标点符号,例如允许空格而不是逗号分隔多个数字。但是,我同意Tim Pietzcker的观点,即正则表达式可能不适合这项工作。

0

在Java:

String newString = oldString.replaceAll("$", ""); 
7

你不需要这个正则表达式。

只需使用lsParseCurrency

numericValue = lsParseCurrency('$1,109,889.23'); writeOutput(numericValue);

Example on trycf.com产量:

1109889.23

按以下Leigh的commment ......要是你的语言环境是什么,不使用,.对于数千和小数分隔符(分别)...确保也指定语言环境,例如:

numericValue = lsParseCurrency('$1,109,889.23', 'en_us');