用于重复一系列数字和数字范围的正则表达式(例如 3 位数字和 3 位数字范围)

标签 regex regex-group regex-greedy

我正在寻找一个正则表达式来匹配重复的数字序列。数字/范围本身可以是任何三位数字,例如我要搭配

345
346-348
234,235,236,237-239
234, 235, 236, 237-239
234,234, 236 and 237-239
234,234, 236 or 237-239
我不想匹配
3454
111-222-333
454,4567 (match only 454)
该号码可以是任何三位数字。我在混合中尝试了不同的正则表达式\d{3},但我没有找到任何有效的方法。感谢您对此的任何帮助。

最佳答案

您可以使用此正则表达式:

^\d{3}(?:-\d{3})?(?:\s*(?:,|and|or)\s*\d{3}(?:-\d{3})?)*(?=,|$)
RegEx Demo
正则表达式详情:
  • ^ : 开始
  • \d{3} : 匹配 3 位数字
  • (?:-\d{3})? : 可选后跟一个连字符和 3 位数字
  • (?: : 启动非捕获组
  • \s* : 匹配 0 个或多个空格
  • (?:,|and|or) : 匹配逗号或 andor
  • \s* : 匹配 0 个或多个空格
  • \d{3} : 匹配 3 位数字
  • (?:-\d{3})? : 可选后跟一个连字符和 3 位数字

  • )* : 启动非捕获组。重复此组 0 次或更多次
  • (?=,|$) : Lookahead 断言我们在当前位置之前有一个逗号或行尾
  • 关于用于重复一系列数字和数字范围的正则表达式(例如 3 位数字和 3 位数字范围),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67388809/

    相关文章:

    php - 使一个或零个正则表达式运算符贪婪

    ruby-on-rails - 如何将 Ruby 变量放入正则表达式代码中

    javascript - 将 HTML5 正则表达式模式转换为 javascript 正则表达式

    c# - 如何在字符串中搜索值并转换值

    regex - VBScript RegExp 不够贪心

    获取磅和盎司的正则表达式,即 16lb 4ozs 及其变体

    php - 从字符串中删除无用的段落标签

    c - 正则表达式教程或书籍

    java - JAVA 的正则表达式获取可选组

    javascript - 获取在正则表达式中匹配的组的索引?