新手与正则表达式,解析一个,只有一个字符

时间:2017-02-20 16:33:03

标签: regex

我必须验证字符串,如:

10y9m12od or 9m12od or 12d or 10y9m or 9m 
那些是正确的。

这些不正确:

10d2m5y, 2m5y10d...

如您所见,元素的顺序很重要,但元素不是强制性的......

我有这个正则表达式,我觉得它很好但是......:

([\d][yY]{1})?([\d][mM]{1})?([\d][o]{0,1}(d|D){1})$

有人能帮助我吗?

1 个答案:

答案 0 :(得分:1)

^(\d+[yY])?(\d{1,2}[mM])?(\d{1,2}o?[dD])?$
  1. 您需要在每个字母前允许多个数字。年份可以是任意数量的数字,月份和日期可以是1或2位数。
  2. 无需在\d中包含o[]
  3. 您最初需要^个锚点。
  4. {1}无需匹配单个重复,这是所有模式的默认值。