【问题标题】:Regex to accept numbers and/or number range separated by commas, but between range 1-4093正则表达式接受以逗号分隔的数字和/或数字范围,但范围在 1-4093 之间
【发布时间】:2017-02-21 11:24:56
【问题描述】:

我需要一个正则表达式来验证用户输入的 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])$  

需要增强逗号分隔和范围

【问题讨论】:

  • 纯代码编写请求在 Stack Overflow 上是题外话——我们希望这里的问题与特定编程问题有关——但我们很乐意帮助您自己编写!告诉我们what you've tried,以及您遇到的问题。这也将有助于我们更好地回答您的问题。
  • 你能告诉我们你尝试了什么以及结果是什么?

标签: regex string numbers range vlan


【解决方案1】:

要匹配从 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]))?)*$

Live demo

【讨论】:

  • @Rinky 请接受答案,因为它可以帮助其他人确定问题已解决,并且适当的功劳归于回答者
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多