2017-09-06 142 views
-1

我需要從刪除貨幣的字符串中提取金額。 例如正則表達式從字符串中獲取金額沒有貨幣符號

我想要的-5.95或6.85

The quick brown fox jumps over the lazy -$5.95 dog. 
The quick brown fox jumps over the lazy $6.85 dog. 

輸出意味着兩個獨到之處或負量應該可以接受,但刪除$符號。

我使用這個模式

([0-9]+[\.]*[0-9]*) 

但它只是變得積極的量。 - $ 5.95被提取爲5.95。 任何想法?

回答

1

看到了類似的問題,你需要匹配的減號。

-?\$[0-9]+[\.]*[0-9]* 

-在開始後,?,使負號可選。

\$匹配一個美元符號,必須通過backslach \逃脫,因爲美元符號在正則表達式中很重要。

與您嘗試使用正則表達式提取值相比,您可以在匹配價格後在美元符號上進行簡單的字符串替換。

match(/-?\$[0-9]+[\.]*[0-9]*/).replace('$', '') 
// -15.27 

此外,你的十進制數表達式可以使用一些清理。

-?[0-9]+(\.[0-9]+)? 

以上()?是一個可選組。

在裏面,\.表示需要單個小數。 A .必須使用反斜槓\轉義,因爲.通常會匹配任何字符。

接下來,一個或多個數字必須匹配。

這種方法可以防止像1.這樣的值被匹配,因爲小數點後面必須至少有一個數字。

+0

謝謝,但如果金額有這樣的美元符號 - $ 5.95?我相信只有金額爲-5.95 – valrecx

+0

@valrecx我已經更新了答案 – Soviut

+0

現在冷卻我的問題是貨幣是動態的,有沒有辦法可以刪除負數和數字之間的任何文本或字符? – valrecx

0

你的正則表達式只是檢查一個數字,句點和另一個數字。你將不得不添加一個連字符的檢查。

例如: -?[0-9]+[\.]*[0-9]*

您可以在How do I include negative decimal numbers in this regular expression?

+0

感謝您的迴應,我嘗試了負面和正面,但如果中間有一個$符號,它不會提取它。 – valrecx

+0

請不要將答案用作評論/回覆。如果你拿出「你有沒有嘗試」的部分,並用一個實際的正則表達式替換它會更好。 – Soviut

相關問題