gpt4 book ai didi

java - 正则表达式检查字符串是否为正自然数

转载 作者:行者123 更新时间:2023-12-01 07:05:55 26 4
gpt4 key购买 nike

我想检查字符串是否为正自然数,但我不想使用 Integer.parseInt() 因为用户可能输入大于 int 的数字。相反,如果数字字符串包含所有“0”字符,我更愿意使用正则表达式返回 false。

if(val.matches("[0-9]+")){
// We know that it will be a number, but what if it is "000"?
// what should I change to make sure
// "At Least 1 character in the String is from 1-9"
}

注意:字符串只能包含0-9,并且不能全部包含0;换句话说,[1-9] 中必须至少有 1 个字符。

最佳答案

您最好使用 BigInteger如果您尝试使用任意大的整数,则以下模式应匹配一系列包含至少一个非零字符的数字。

\d*[1-9]\d* 

Regular expression visualization

Debuggex Demo

Debugex 的单元测试似乎有点错误,但您可以在那里使用该模式。它非常简单,应该具有相当的跨语言兼容性,但在 Java 中您需要转义它。

Pattern positiveNumber = Pattern.compile("\\d*[1-9]\\d*");
<小时/>

请注意,上面(故意)匹配我们通常不认为是“正自然数”的字符串,因为有效字符串可以以一个或多个 0 开头,例如000123。如果您不想匹配此类字符串,可以进一步简化模式。

[1-9]\d*    

Regular expression visualization

Debuggex Demo

Pattern exactPositiveNumber = Pattern.compile("[1-9]\\d*");

关于java - 正则表达式检查字符串是否为正自然数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24645577/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com