Java 数字格式验证

Posted

技术标签:

【中文标题】Java 数字格式验证【英文标题】:Java number format validation 【发布时间】:2020-08-05 12:02:30 【问题描述】:

您能否建议使用 Java 验证数字格式的解决方案。 作为输入参数,我收到字符串。比如有欧洲格式:1.234,56 然后我做解析:

NumberFormat.getNumberInstance(locale).parse(value) 

但在解析之前我需要验证。 输入数据示例: 1..234,,56 - 不应该有效但可以解析

【问题讨论】:

为什么它应该是无效的?根据什么规则?如果您的规则不是“可解析的内容是有效的”,那么 you 需要定义什么是有效的,例如使用正则表达式。 【参考方案1】:

您可以构建正则表达式来检查字符串中包含逗号或小数的格式。 还可以参考正则表达式,例如: ^\d1,3|\d(([ ,]?\d3)*([.,]\d2+)?$)

你也可以看看这个:Java regex to check if string is valid number format (comma and decimal point placing)

【讨论】:

【参考方案2】:

嗯,有很多可能的解决方案。但是对于这种情况,最好使用异常。当无法将字符串转换为数字时,基本上是给用户写一条消息,说他写错了数字,并要求他输入新的数字。要选择正确的号码类型,您可以使用overloading

try 
    NumberFormat.getNumberInstance(locale).parse(value)

catch(Exception e) 
    System.out.println("The number entered is invalid.");
    // Enter the new number code

【讨论】:

以上是关于Java 数字格式验证的主要内容,如果未能解决你的问题,请参考以下文章

java 带要求的验证邮箱的正则表达式

图文验证码—数字验证技术

本人初学Java,有啥好的图形验证码推荐吗?

java导入excel时处理日期格式(已验证ok)

JS正则验证数字格式2

java字符串操作,验证输入的身份证合法与否