【问题标题】:Regex for xx days, xx months or xx yearsxx 天、xx 个月或 xx 年的正则表达式
【发布时间】:2010-11-27 09:19:47
【问题描述】:

我需要一个接受以下输入的正则表达式

1 天

4 天

15 天

1 个月

12 个月

1 年

5 年

数字可以有任意长度。有什么想法吗?

【问题讨论】:

  • 有什么目的?你想得到数字吗?您想强制执行特定的输入格式吗?字符串可以合并吗?请添加有关预期输入和输出的更多信息。

标签: php regex validation


【解决方案1】:

试试这个,

^(1 (Day|Month|Year)|[1-9][0-9]* (Days|Months|Years))$

它不会接受我认为无效的输入,例如“5 Day”和“04 Months”

解释:

输入要么是“1 天/月/年”,要么是数字 1-9,后跟任意数量的数字 0-9,后跟空格和字符串“Days”“Months”或“Years”之一"

【讨论】:

  • 04 个月可能会被问这个问题的人认为是有效的,因为用户遇到了太多糟糕的验证器,以至于可能会出现前导零并且用户可能会假设。
【解决方案2】:
\d+\s+(Day|Month|Year)(s)?
  • \d+ 至少一位数
  • \s+ 至少一个空格字符
  • (日|月|年)日或月或年
  • (s)?可选地复数单位

【讨论】:

  • 如果^$ 不是我们想要的,我会在其两侧放置一个\b
猜你喜欢
  • 1970-01-01
  • 2022-08-04
  • 2015-10-10
  • 2012-01-23
  • 1970-01-01
  • 2015-01-10
  • 2011-12-04
  • 2022-09-30
  • 1970-01-01
相关资源
最近更新 更多