我正在制作一个正则表达式,应该允许格式为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])?$
这些似乎都不允许空值。
有人可以告诉我需要添加到正则表达式中以允许值为空吗?
答案 0 :(得分:2)
你真的很亲密。您需要的是匹配您的RE,或一个空字符串。因此
^(20[1-5]\d(0|1)\d[0-3]\d-\d[1-9]|)$
应该做的伎俩。 (N.b. |
结束捕获组。)
问候。