perl正则表达式求助

perl正则表达式求助

网络主机地址 从202.106.187.129到202.106.187.190  这个IP段怎么用perl正则表达式来表示?谢谢
匹配129-190你会不?
匹配29-90你会不?
方法一:
人肉写29-90,中间用|隔开
方法二
29和90单独匹配
然后匹配30-89

[Copy to clipboard] [ - ]
CODE:
[3-8][0-9]|29|90

谢谢 churchmice。
# 202.106.187.129-190
/^202\.106\.187\.(1[3-8][0-9]|129|190)$/

上面表达式是否正确?

202.106.182.129-202.106.182.254
这个怎么写?

#!/usr/bin/perl
use NetAddr::IP::Lite;

my $ip = NetAddr::IP::Lite->new('202.106.182.129');
my $ip_net = NetAddr::IP::Lite->new('202.106.182.128/25');
if ($ip->within($ip_net)) {
print "OK\n";
}
churchmice的解法很高效的:
[3-8][0-9]|29|90

由于29和90是特殊的数,不妨单独列出;由于出现概率低,不妨放在最后。
对于除此之外的数字,30-89,观察到左边的部分3-8任意,右边的部分0-9任意,因此:
[3-8][0-9]
,或
[3-8]\d
,均能匹配。