[英]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.