【发布时间】:2015-09-08 09:37:54
【问题描述】:
给定一个字符串,如:
S5.4.2
3.2
SD45.G.94L5456.294.1004.8888.0.23QWZZZZ
5.44444444444444444444444444444.5GXV
您需要返回:
5.4.2
3.2
5456.294.1004.8888.0.23
5.44444444444444444444444444444.5
有没有一种聪明的方法来编写一个只提取类似 IP 地址的数字的方法? (我说类似 IP 地址是因为我不确定 IP 地址是否通常是一组数字)。我的一位朋友建议我正在寻找的可能有一个正则表达式,所以我找到了this。该解决方案的问题是我认为它总共仅限于 4 个整数,并且也不会期望像点之间有 4 个以上数字这样的整数。
我需要它来识别模式:
NUMS DOT(只有一个)NUMS DOT(只有一个)NUMS
意思:
234..54.89 失败
.54.6.10 失败
256 失败
234.7885.924.120.2.0.4 通过
有什么想法吗?感谢大家。我已经在这个问题上待了几个小时,但无法弄清楚。
【问题讨论】:
-
IP 地址只有 4 个数字。您将永远不会看到无效的有效 IP。无论如何,您推荐正则表达式的朋友是正确的。这将是根据您的规范匹配字符串的最简单方法。你希望它只匹配 IP(所以 4 个数字)还是其他的?
-
@Piccolo IPv6 地址是 八 组十六进制数字。
-
@Piccolo 我需要从字符串中提取的数字必须以整数开头,以点分隔整数,必须以整数结尾,并且可以无限长(或者只要字符串可以容纳值,所以 240 万左右)。抱歉,如果我的帖子中没有明确说明。
-
@ceejayoz 哦,对了,我总是忘记 IPv6。
-
这是一个可以用来匹配它们的正则表达式:
^\d(\.\d+)+$,这是我的测试用例:fiddle.re/q76j86 编辑:只需重新阅读问题,这不正是您正在寻找的为,但希望它能让你走上正轨。