簡體   English   中英

貨幣的Javascript正則表達式

[英]Javascript regex for currency

我只想傳遞適當的貨幣金額,例如22.22、465.56、1424242.88

我一直在使用此正則表達式:

[0-9]+\.[0-9][0-9](?:[^0-9a-zA-Z\s\S\D]|$)

但它允許使用符號,例如£25.55。 如何只強制采用正確貨幣格式的數字?

謝謝你的幫助

聽起來您只是沒有在正則表達式上提供錨,而您也沒有逃脫過. 例如,應該是:

var currencyNumbersOnly = /^\d+\.\d{2}$/;

分解:

  • ^字符串的開頭。

  • \\d一個數字(0-9)。

  • +一個或多個先前的實體(因此\\d+表示“一個或多個數字”)。

  • \\. 文字小數點。 需要注意的是一些文化使用,而不是.

  • \\d{2}恰好是兩位數。

  • $字符串結尾。

這不是很嚴格。 例如,它允許0000000.00 它還不允許2 (改為2.00 )。 還要注意,即使是在談論貨幣數據時,我們也不總是總是下降到數百個。 例如,銀行匯率可能會在小數點右邊連續數個位置。 (例如,xe.com說,現在,1美元= 0.646065英鎊)。

正如傑克(Jack)在對問題的評論中指出的那樣,您可能希望允許使用負數,因此請加上-? (0或1 -字符)在那里之后^可適當:

var currencyNumbersOnly = /^-?\d+\.\d{2}$/;

更新 :現在,我可以看到您的完整正則表達式,您可能需要:

var currencyNumbersOnly = /^\d+\.\d{2}(?:[^0-9a-zA-Z\s\S\D]|$)/;

我不確定最后您會如何處理,特別是似乎 (除了其他事情)您可以允許一個字符,只要它不是0-9 只要它不是不是\\D 因為\\D意思是“不是0-9 ”,所以很難看出有什么能與之匹配。 (同樣,其中的\\s\\S

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM