簡體   English   中英

如何在Java中驗證Currency String

[英]How to validate the Currency String in java

假設我有一個德語格式的貨幣String:

String money="1.203.432,25";

我想檢查錢是否是有效的貨幣值。 “ 0,00”有效,“ 134.20,24”無效,“ 02,23”無效,依此類推。 如何用Java做到這一點?

使用本地化的數字格式(如果總是德國格式,則使用正則表達式)。

正則表達式可能類似於^(?:0|[1-9][0-9]{0,2}(?:\\.[0-9]{3})*),[0-9]{2}$ ,使用String#matches()Matcher#matches()時不需要^$

數字格式可以是###,##0.00類的DecimalFormat ###,##0.00也可以只使用NumberFormat.getInstance( Locale.GERMAN ) 但是,數字格式的問題在於,它允許數字以前導零開頭,因此,如果要禁止這些數字,可以檢查第一個數字是否為零。

也許您正在尋找Apache CurrencyValidator

public static void main (String[] args) throws java.lang.Exception {
     BigDecimalValidator validator = CurrencyValidator.getInstance();

     BigDecimal amount = validator.validate("€ 123,00", Locale.GERMAN);

     if(amount == null){
         System.out.println("Invalid amount/currency.");
     }

}

該代碼段似乎有效:

String money="23.234,00";
Pattern p=Pattern.compile("^(?:0|[1-9]\\d{0,2}(?:\\.\\d{3})*),\\d{2}$");
Matcher m=p.matcher(money);
if (m.matches()) System.out.println("valid");
else System.out.println("unvalid");

使用以下模式:“([[0-9] {1,3} \\。)* [0-9] {1,3} \\,[0-9] {2}”

System.out.println("11.118.576.587,58".matches("([0-9]{1,3}\\.)*[0-9]{1,3}\\,[0-9]{2}"));

暫無
暫無

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

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