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