2010-12-03 175 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');