首页新闻找找看学习计划

正则表达式验证端口号范围为1024到65535,如何写?

0
悬赏园豆:5 [已解决问题] 解决于 2016-03-30 15:45

正则表达式验证端口号范围为1024到65535,如何写?

冷水寒冰的主页 冷水寒冰 | 初学一级 | 园豆:4
提问于:2015-12-08 09:30
< >
分享
最佳答案
1
zhaoyn@dev:~/test/perl$ grep -P '^(102[4-9]|10[3-9]\d|1[1-9]\d\d|[2-9]\d{3}|[1-5]\d{4}|6[0-4]\d{3}|65[0-4]\d{2}|655[0-2]\d|6553[0-5])$' 3.txt |wc -l
64512
zhaoyn@dev:~/test/perl$ grep -P -v '^(102[4-9]|10[3-9]\d|1[1-9]\d\d|[2-9]\d{3}|[1-5]\d{4}|6[0-4]\d{3}|65[0-4]\d{2}|655[0-2]\d|6553[0-5])$' 3.txt
1023
65536

用楼上哥的也成

附上测试

zhaoyn@dev:~/test/perl$ grep -P -v '^(1(02[4-9]|0[3-9][0-9]|[1-9][0-9]{2})|[2-9][0-9]{3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])$' 3.txt
1023
65536
zhaoyn@dev:~/test/perl$ grep -P '^(1(02[4-9]|0[3-9][0-9]|[1-9][0-9]{2})|[2-9][0-9]{3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])$' 3.txt |wc -l
64512
收获园豆:3
zhaoyingnan911 | 菜鸟二级 |园豆:245 | 2015-12-28 18:05
其他回答(4)
-2

^[1024-65535]$

澈澈 | 园豆:435 (菜鸟二级) | 2015-12-08 09:47

别逗我行吗兄弟?

支持(1) 反对(0) 冷水寒冰 | 园豆:4 (初学一级) | 2015-12-08 09:49

@冷水寒冰: 你为什么不选择直接判断,非要用正则呢

if (num >1024 && num < 65535)
{
return true;
}

支持(1) 反对(0) 澈澈 | 园豆:435 (菜鸟二级) | 2015-12-08 10:27

@澈澈: 能判断我还费劲也正则干嘛,我这正则表达式要配置到数据库里面。

支持(0) 反对(0) 冷水寒冰 | 园豆:4 (初学一级) | 2015-12-08 12:22
2

^(1(02[4-9]|0[3-9][0-9]|[1-9][0-9]{2})|[2-9][0-9]{3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])$

Yu | 园豆:12944 (专家六级) | 2015-12-08 11:09

多谢大神,等我验证看看。

支持(0) 反对(0) 冷水寒冰 | 园豆:4 (初学一级) | 2015-12-08 12:23

@冷水寒冰: 可以么? 我用在线工具测试不出来啊。。。不过看着这个写法好牛啊~

支持(0) 反对(0) 小刺猬001 | 园豆:656 (小虾三级) | 2015-12-08 13:57
0

1(02[4-9]|0[3-9][0-9]|[1-9][0-9]{2})|[2-9][0-9][3]|[1-5][0-9]{4}|6([0-4][0-9][3]|5([0-4][0-9]{2}|5([0-2][0-9]|3[0-5])))

和2楼的差不多,不过把6和5集合了一下[0-9]也可以用\d代替.

收获园豆:2
里斯开始反击 | 园豆:204 (菜鸟二级) | 2016-01-05 16:44
0

/^(102[4-9]|10[3-9]\d|1[1-9]\d{2}|[2-9]\d{3}|[1-5]\d{4}|6[0-4]\d{3}|65[0-4]\d{2}|655[0-2]\d|6553[0-5])$/; 

salahhh | 园豆:202 (菜鸟二级) | 2018-05-30 09:56
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册