首页 > 解决方案 > 星期几/月份范围内的较短正则表达式

问题描述

我需要一个正则表达式以两种格式匹配星期几:正常方式,如“mon”、“fri”等,但我还需要在同一个正则表达式中用于范围类型的格式,如“mon-fri”

几个月相同:“jan”、“feb”、“jan-dec”

我有这个工作正则表达式:

^((jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)|((jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)-(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)))$

但它很大,不确定是否理想。

标签: regex

解决方案


好吧,不幸的是,您没有列出您的语言,所以我假设一切正常。

(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)(?:-(?1))?

在捕获组中列出您的月份,然后使用 递归相同的子模式(?1),并将其与破折号一起设为可选(?:-...)?

看这里


推荐阅读