Regex 正则表达式接受由逗号分隔的数字和/或数字范围,但范围在1-4093之间

Regex 正则表达式接受由逗号分隔的数字和/或数字范围,但范围在1-4093之间,regex,string,numbers,range,vlan,Regex,String,Numbers,Range,Vlan,我需要一个正则表达式来验证用户输入的VLAN字符串。字符串应该允许数字或范围,用逗号分隔。数字必须介于1和4093之间 允许使用以下样品: 1, 1,2,3,4 1-10, 1-4093 4000 我尝试了以下方法: ^0*([1-9]|[1-8][0-9]|9[0-9]|[1-8][0-9]{2}|9[0-8][0-9]|99[0-9]|[1-3][0-9]{3}|40[0-8][0-9]|409[0-3])$ 需要增强逗号分隔和范围以匹配1到4093之间的数字,可以使用: (?:[

我需要一个正则表达式来验证用户输入的VLAN字符串。字符串应该允许数字或范围,用逗号分隔。数字必须介于1和4093之间

允许使用以下样品:

1,
1,2,3,4
1-10, 
1-4093
4000
我尝试了以下方法:

^0*([1-9]|[1-8][0-9]|9[0-9]|[1-8][0-9]{2}|9[0-8][0-9]|99[0-9]|[1-3][0-9]{3}|40[0-8][0-9]|409[0-3])$  

需要增强逗号分隔和范围

以匹配1到4093之间的数字,可以使用:

(?:[1-9]\d{0,2}|[1-3]\d{3}|40(?:[0-8]\d|9[0-3]))
我们称之为
N
。现在重复部分:

^(N)(?:[,-] *(N)?)*$
其中:

^(?:[1-9]\d{0,2}|[1-3]\d{3}|40(?:[0-8]\d|9[0-3]))(?:[,-] *(?:[1-9]\d{0,2}|[1-3]\d{3}|40(?:[0-8]\d|9[0-3]))?)*$

用于vlan id范围1-4093的正则表达式

(40(?:[0-8]\d|9[0-3])|[1-3]\d{2,3}|\d{2,3}|[1-9])

纯代码编写请求与堆栈溢出无关——我们希望这里的问题与特定的编程问题有关——但我们很乐意帮助您自己编写!告诉我们,你被困在哪里了。这也将有助于我们更好地回答您的问题。您能告诉我们您尝试了什么以及结果是什么吗?@Rinky请接受答案,因为它有助于其他人确定问题已经解决,并且回答的人将获得适当的积分