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

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

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})?)*(?=,|$)

正则表达式演示

正则表达式详情:

  • ^: 开始
  • d{3}: 匹配 3 个数字
  • (?:-d{3})?: 可选后跟一个连字符和 3 位数字
  • (?:: 启动非捕获组
    • s*: 匹配 0 个或多个空格
    • (?:,|and|or): 匹配逗号或andor
    • s*: 匹配 0 个或多个空格
    • d{3}: 匹配 3 个数字
    • (?:-d{3})?: 可选后跟一个连字符和 3 位数字
  • )*: 启动非捕获组。重复此组 0 次或更多次
  • (?=,|$): Lookahead 断言我们在当前位置之前有一个逗号或行尾

以上是用于重复一系列数字和数字范围的正则表达式(例如3位数字和3位数字范围)的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>