【问题标题】:RegularExpression for year/calendar week年/日历周的正则表达式
【发布时间】:2011-01-21 11:13:31
【问题描述】:

我的正则表达式技能需要改进。所以也许有人可以帮助我重回正轨。

背景:我有一个文本框,用户可以在其中输入年/周组合,而不是输入日期。我在服务器端将其转换为日期实例(该周的最后一天)。现在我必须使用 RegularExpressionValidator 验证这一点。

格式:示例格式可以是 10w32 表示 2010 年和日历周 32。数字 w 不区分大小写。周数应在 1 到 53 之间。 其他有效示例:

99w02  -> 1999 week 2
2W53   -> 2002 week 53
2001w1 -> 2001 week 1

提前谢谢你。

【问题讨论】:

    标签: .net regex validation


    【解决方案1】:

    怎么样

    \d{1,4}[wW](\d|([0-4]\d)|(5[0123]))
    

    ? (当然是适当地逃脱了)。

    解释:

    • 1-4 位数
    • w 或 w
    • 单个数字...
    • ...或两位数,第一个是0-4,第二个是任意数字
    • ... 或 5 后跟 0、1、2 或 3

    交替构造中的某些分组可能是不必要的 - 这也可能有效:

    \d{1,4}[wW](\d|[0-4]\d|5[0123])
    

    ...测试一下看看。

    请注意,这是完全未经测试的...单元测试是您的朋友,需要仔细检查。

    在开头使用^,在结尾使用$,强制正则表达式匹配整个字符串,例如

    ^\d{1,4}[wW](\d|[0-4]\d|5[0123])$
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-12
    • 2020-08-11
    相关资源
    最近更新 更多