寻求可验证多行端口号(1-65535)的正则表达式方案
解决方案
1. 提取文本中所有有效端口
如果只需从多行文本里提取所有符合1-65535的有效端口(自动忽略空格、换行、分隔线等无关字符),用这个正则:
\b(?:[1-9]\d{0,3}|[1-5]\d{4}|6[0-4]\d{3}|65[0-4]\d{2}|655[0-2]\d|6553[0-5])\b
说明:
\b:单词边界,确保匹配独立的端口号,避免误匹配类似65536里的6553,或带前导零的080(这类不符合端口规范)。- 端口范围拆分匹配:
[1-9]\d{0,3}:覆盖1-9999[1-5]\d{4}:覆盖10000-599996[0-4]\d{3}:覆盖60000-6499965[0-4]\d{2}:覆盖65000-65499655[0-2]\d:覆盖65500-655296553[0-5]:覆盖65530-65535
2. 验证整个文本区域仅含有效端口及合法分隔符
如果需要确保输入的多行文本里只有有效端口(允许用空格、换行、逗号、横线等作为分隔符),用这个正则:
\A(?:(?:[1-9]\d{0,3}|[1-5]\d{4}|6[0-4]\d{3}|65[0-4]\d{2}|655[0-2]\d|6553[0-5])(?:\s+|,|-))*(?:[1-9]\d{0,3}|[1-5]\d{4}|6[0-4]\d{3}|65[0-4]\d{2}|655[0-2]\d|6553[0-5])?\z
说明:
\A和\z:匹配整个字符串的开头和结尾,确保全文本符合规则,不受换行干扰。(?:\s+|,|-):可自定义的合法分隔符集合,\s+包含空格、换行、制表符等空白字符,可根据需求添加|等其他分隔符。- 末尾的
?:允许文本为空,若需禁止空输入,直接删除该符号即可。
示例测试
针对输入:
80 443, 8080 22 - 21
- 提取正则会匹配到
80、443、8080、22、21 - 验证正则会返回匹配成功,因为所有内容都是有效端口加合法分隔符
内容的提问来源于stack exchange,提问作者tsnov
相关产品推荐
相关产品推荐

