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
^[1024-65535]$
别逗我行吗兄弟?
@冷水寒冰: 你为什么不选择直接判断,非要用正则呢
if (num >1024 && num < 65535)
{
return true;
}
@澈澈: 能判断我还费劲也正则干嘛,我这正则表达式要配置到数据库里面。
^(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])$
多谢大神,等我验证看看。
@冷水寒冰: 可以么? 我用在线工具测试不出来啊。。。不过看着这个写法好牛啊~
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代替.
/^(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])$/;