我正在尝试获取有效的正则表达式语法来匹配以下值。该字段可以包含
- 逗号分隔的值或单个值。例如“22”或“22,456”
- 带破折号的端口范围。例如“22-600”
值的范围是 1 到 65535
尝试
正确匹配单个端口,但不支持“,”或“-”
^(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|6[0-4][0-9]{3}|[1-5][0-9]{4}|[1-9][0-9]{1,3}|[0-9])(?:,(?1))*$
不匹配单个端口,但匹配多个逗号分隔的端口
^(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|6[0-4][0-9]{3}|[1-5][0-9]{4}|[1-9][0-9]{1,3}|[0-9])(?:,(?1))(?:,(?1))*$
与单个端口不匹配,但与某个端口范围匹配
^(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|6[0-4][0-9]{3}|[1-5][0-9]{4}|[1-9][0-9]{1,3}|[0-9])(?:-(?1))(?:(?1))*$
答案1
我建议:
^(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|6[0-4][0-9]{3}|[1-5][0-9]{4}|[1-9][0-9]{0,3})-(?1)|(?1)(,(?1))+$
第一个正则表达式 hat[0-9]
作为最后一个选项,允许 0 作为值。我修改了它并添加了其他选项。