2016-03-02 100 views
0

我正在研究一个允许格式为yyyymmdd-nn的正则表达式。 (2010年至2059年间4个数字年,2位数月份,2位数日,破折号,然后是01和99之间的值)。需要正则表达式才能允许空值

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

第二部分是,我还需要允许空值。理想情况下,我希望它是空的,但如果不可能,用户输入最多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])?$

没有人可以允许空值,无论是。

有人能告诉我什么我需要添加到我的正则表达式,以允许值为空?

+2

你很亲密。试试'^(20 [1-5] \ d(0 | 1)\ d [0-3] \ d- \ d [1-9] |)$'。 – ClasG

+0

你试过用(\\ s *)开始,你可能需要使用双反斜杠。 – Hughzi

回答

2

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

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

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

关心。