正则表达式接受数字 and/or 以逗号分隔的数字范围,但范围在 1-4093 之间
Regex to accept numbers and/or number range separated by commas, but between range 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])
我需要一个正则表达式来验证用户输入的 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])