正则表达式编号范围问题,无法阻止 -

时间:2013-02-12 12:28:43

标签: regex

您好我正在使用此功能在交换机上生成范围:http://code.google.com/p/klish/wiki/subcommands

我已将模式设置为0-255。这很好用

<PTYPE name="MAX_LEARN_ADDR"
            method="integer"
            pattern="0..255"
            />

这正确地只接受0-255并且停止像* $£这样的东西,说它们无效。但是 - 导致错误。我试过了:

 ^([01]?[0-9]?[0-9]|2[0-4][0-9]|25[0-5])$

同样的事情发生了。

示例法律输入:

switch(config-if)# switchport port-security maximum 3                           
%INFO: port-security maximum is 3, up to 3 DYNAMIC addresses will be learned

示例非法输入:

switch(config-if)# switchport port-security maximum *                           
Syntax error: Illegal parameter

然而:

switch(config-if)# switchport port-security maximum -                           

给出一个python跟踪,因为 - 没有被捕获为无效参数并且被传递给函数。

4 个答案:

答案 0 :(得分:0)

为什么不尝试使用它来代替你应该允许的模式?

编辑2 好吧,这应该可以解决问题!

^(25[0-5]|[2][0-4]\d|[1]\d\d|[1-9]\d|\d)$

答案 1 :(得分:0)

^([1-9]?\d|1\d{2}|2[0-4]\d|25[0-5])$将是您需要的

答案 2 :(得分:0)

这个正则表达式可能会为你做的工作。

^25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d$

第一部分:25[0-5]允许250到255之间的数字 第二部分:2[0-4]\d允许200到249之间的数字 第三部分:1\d\d允许数字从100到199 最后一部分:[1-9]?\d允许从0到99的数字,并确保00或01不被接受,但0,1等等。

答案 3 :(得分:0)

答案是如果范围以0开头,则klish存在问题。