如何检查数字String的可选变量长度?

时间:2012-07-17 18:35:40

标签: regex variables format

我正在尝试验证IP地址,

等内容

它可能附加一个端口或不附加。让我说:10.12.1.100和10.12.1.100:8080都没问题。

我创造了这样的东西:

  

^ 10 \([0-9] |。[1-9] [0-9] | 1([0-9] [0-9])| 2([0-4] [0-9 ] | 5 [0-5]))\([0-9] |。[1-9] [0-9] | 1([0-9] [0-9])| 2([0-4 ] [0-9] | 5 [0-5]))\([0-9] |。[1-9] [0-9] | 1([0-9] [0-9])| 2 ([0-4] [0-9] | 5 [0-5]))([ - +](:|?\ d [1,4]))$

然而,它不适用于:10.12.1.100:8080部分。 如何实现这部分([ - +]?(:| \ d [1,4]))?

如果我删除([ - +]?(:| \ d [1,4]));它将在10.12.1.100右边有效。

谢谢,

2 个答案:

答案 0 :(得分:1)

使用此正则表达式^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)(:\d{1,5})?$

答案 1 :(得分:0)

您的特定模式似乎正在进行一些非常具体的IP匹配,否则我建议使用类似@burning_LEGION的建议。我猜你的场景中有一些特定的东西超出正常的IP解析范围。

我只扩展您当前的模式,因为我假设您要求组结构保持不变。否则我建议改写。

但要修复您的具体示例,请尝试将([-+]?(:|\d[1,4]))$替换为([-+]?(:\d{1,5}))?$