需要正则表达式以允许空值

时间:2016-03-02 14:55:32

标签: regex

我正在制作一个正则表达式,应该允许格式为yyyymmdd-nn。 (2010年至2059年之间的4位数年份,2位数月份,2位数日期,短划线,然后是介于01和99之间的值)。

这有效...... (20[1-5]\d(0|1)\d[0-3]\d-\d[1-9])

第二部分是我还需要允许空值。理想情况下,我希望它为null,但如果不可能,并且用户最多可以输入11个空格,那就没关系。

我尝试过使用\ s

的不同变体

(\s{0-11})|(20[1-5]\d(0|1)\d[0-3]\d-\d[1-9])

(\s?)|(20[1-5]\d(0|1)\d[0-3]\d-\d[1-9])

(\s*)(20[1-5]\d(0|1)\d[0-3]\d-\d[1-9])

这些都告诉我它有无限的可能性。

我也试过......

(20[1-5]\d(0|1)\d[0-3]\d-\d[1-9])|null

(20[1-5]\d(0|1)\d[0-3]\d-\d[1-9])?

^(20[1-5]\d(0|1)\d[0-3]\d-\d[1-9])?$

这些似乎都不允许空值。

有人可以告诉我需要添加到正则表达式中以允许值为空吗?

1 个答案:

答案 0 :(得分:2)

你真的很亲密。您需要的是匹配您的RE,一个空字符串。因此

^(20[1-5]\d(0|1)\d[0-3]\d-\d[1-9]|)$

应该做的伎俩。 (N.b. |结束捕获组。)

问候。