我正在尝试验证这种模式:
1.1.1.1最高为254.254.254.254,但没有前导零。所以001.001.001.001不应该匹配。
我有
/^([01]?[0-9]?[0-9]|2[0-4][0-9]|25[0-4])\.([01]?[0-9]?[0-9]|2[0-4][0-9]|25[0-4])\.([01]?[0-9]?[0-9]|2[0-4][0-9]|25[0-4])\.([01]?[0-9]?[0-9]|2[0-4][0-9]|25[0-4])$/
但这与前导零相匹配。任何人都可以推荐如何解决这个问题吗?
答案 0 :(得分:3)
每个元素都是:
[1-9][0-9]?|1[0-9][0-9]|2[0-4][0-9]|25[0-4]
零件细分:
(1-99) (100-199) (200-249) (250-254)
哦,还有一件我应该提到的......你需要在第2,第3和第4位处理数字0
。因此,只需在这些组中为单个0
数字添加一个额外选项。我不认为将零作为IP地址中的第一个数字是有效的(尽管如果它是掩码,它是有效的。)
答案 1 :(得分:0)
对于像这样的重复模式,使用编号重复很方便。以下内容应与您之后的内容相匹配
([1-9]\d{0,3}\.){3}[1-9]\d{0,3}
编辑:我睡着了,错过了部分上限为.254。我有机会时会更新。
答案 2 :(得分:0)
这应该有效
^(([1-9][0-9]?|1[0-9]{2}|2[0-4][0-9]|25[0-4]))\.(?1)\.(?1)\.(?1)$
答案 3 :(得分:0)
试试这个。
([1-9]$|[1-9][0-9]$|[12][0-9][0-9]$)\.([0-9]$|[1-9][0-9]$|[12][0-9][0-9]$)\.([0-9]$|[1-9][0-9]$|[12][0-9][0-9]$)\.([1-9]$|[1-9][0-9]$|[12][0-9][0-9]$)