求助:检验端口号码合法性的正则表达式

求助:检验端口号码合法性的正则表达式

求助:检验端口号合法性的正则表达式

现有一字符串,表示的是 允许访问的端口号码
该字符串制定端口号有三种方式
方式1:指定一个特定的端口号, 例:161
方式2:指定一个端口号范围,  例: 7-161
方式3:指定多个独立的端口号, 例:7,9,13,19,20,21,23,80,160,161

现在想用一个正则表达式匹配,看看一个字符串 是不是符合上述三种格式,
该怎么写这个正则表达式呢 ?

谢谢先了!      
实际上在shell中正则式都得配合一些工具来使用
比如grep, sed, awk
(bash3.2好像直接支持部分了?)

以下代码并不足够严谨, 但基本可用
当是抛个砖吧
复制内容到剪贴板
代码:
if echo $port | egrep -wq '^(([[:digit:]]+)([-,][[:digit:]])?)+$'; then
     echo "match"
else
    echo "not match"
fi