Java 限制介于小数之间的数字

Java 限制介于小数之间的数字,java,regex,Java,Regex,我试图验证一个小数介于0和255之间的数字是否在允许前导零的范围内 到目前为止,我已经想出了正则表达式 ^0*([1-9][\.\d]|250)* 我试过的例子是63.32.32.250,但是它只抓取63,而不是字符串的其余部分 我以为[\.\d]会包括所有的句点,但事实并非如此 我做错了什么?感谢使用正则表达式,因为这不是一个好主意,您可以这样使用: InetAddressValidator.getInstance().isValid(YOUR_IP_HERE) 顺便说一句,您也可以使用i

我试图验证一个小数介于0和255之间的数字是否在允许前导零的范围内

到目前为止,我已经想出了正则表达式

^0*([1-9][\.\d]|250)*
我试过的例子是63.32.32.250,但是它只抓取63,而不是字符串的其余部分

我以为[\.\d]会包括所有的句点,但事实并非如此


我做错了什么?感谢使用正则表达式,因为这不是一个好主意,您可以这样使用:

InetAddressValidator.getInstance().isValid(YOUR_IP_HERE)

顺便说一句,您也可以使用
isValidInet4Address
方法。

使用正则表达式不是一个好主意,您可以这样使用:

InetAddressValidator.getInstance().isValid(YOUR_IP_HERE)

顺便说一句,您也可以使用
isValidInet4Address
方法。

Federico Piazza的答案更好,但如果您想手动执行,我会考虑使用split函数并使用>将数字字符串解析为整数
->用Federico Piazza的答案检查它是否在正确的范围内更好,但如果您想手动执行,我会考虑使用split函数并使用>将数字字符串解析为整数 ->检查其是否在正确范围内,只需使用>Works w/瑕疵即可 要验证IPv4地址,请执行以下操作

^((?:\d{1,3}\.){3}\d{1,3})$

但这有一个致命的缺陷,即不检查数字是否在1-255之间

作品

带缺陷的工程 要验证IPv4地址,请执行以下操作

^((?:\d{1,3}\.){3}\d{1,3})$

但这有一个致命的缺陷,即不检查数字是否在1-255之间

作品


对于一组数字:

^0*([0-9]{1,2}|1[0-9]{2}|2[0-4][0-9]|25[0-5])$
对于四组,重复以下步骤:

^0*([0-9]{1,2}|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.0*([0-9]{1,2}|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.0*([0-9]{1,2}|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.0*([0-9]{1,2}|1[0-9]{2}|2[0-4][0-9]|25[0-5])$

这将捕获四组数字。

对于一组数字:

^0*([0-9]{1,2}|1[0-9]{2}|2[0-4][0-9]|25[0-5])$
对于四组,重复以下步骤:

^0*([0-9]{1,2}|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.0*([0-9]{1,2}|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.0*([0-9]{1,2}|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.0*([0-9]{1,2}|1[0-9]{2}|2[0-4][0-9]|25[0-5])$

这将捕获四个组。

是否尝试为IPV4地址创建正则表达式?请参阅可能的重复项。不,我并不是真的尝试为IPV4地址创建正则表达式,只是为任何带有3个小数点和4个数字的随机数字地址创建正则表达式。我看了一下建议的链接,那些正则表达式看起来特别长。也许还有更优雅的解决方案吗?一个由
分隔的数值地址,其值介于0和255之间。嗯,这似乎非常接近IPv4。。。你应该使用你知道的同样的逻辑。检查一下,这里有一个regex的planty,像这样的范围并不简单,就是regex。但是,您可以拆分字符串并检查数值范围是否尝试为IPV4地址生成正则表达式?可能与See重复。不,我并不是真的尝试为IPV4地址生成正则表达式,只是为任何具有3个小数点和4个数字的随机数字地址生成正则表达式。我看了一下建议的链接,那些正则表达式看起来特别长。也许还有更优雅的解决方案吗?一个由
分隔的数值地址,其值介于0和255之间。嗯,这似乎非常接近IPv4。。。你应该使用你知道的同样的逻辑。检查一下,这里有一个regex的planty,像这样的范围并不简单,就是regex。但是您可以拆分字符串并检查数值RangeSpilt方法是否使用正则表达式作为参数。你必须用
\\\.
逃离圆点。如果不拆分它,数组将包含12个nullvalues@FedericoPiazza如果您使用
,它将是一个零长度数组,因为不会返回尾随的空字符串。@AndyTurner,true。。。我以为会把它分成几份times@FedericoPiazza如果调用
split(“.”,-1)
,则会出现这种情况。split方法将正则表达式作为参数。你必须用
\\\.
逃离圆点。如果不拆分它,数组将包含12个nullvalues@FedericoPiazza如果您使用
,它将是一个零长度数组,因为不会返回尾随的空字符串。@AndyTurner,true。。。我以为会把它分成几份times@FedericoPiazza如果您调用
split(“.”,-1)
,则会出现这种情况。