我正在做以下工作:
^((199)0-9|2000-9|2010-8)(01-9|10-2)(01-9|1\d|2\d|301)\s0-9?$
所以我有这个正则表达式,未加黑体的部分(空间前的前8个字符)工作正常。在第二部分(这将是可选的),从我想要放置的空格开始:或。强制字符(至少一次)。
所以
19991019 will pass
19991019 1233 won't pass because does not include : or .
19991019 10:12:12 will passs
19991019 10.2.4 will pass
19991019123.1231.123 won't pass
19991019 aa.12.22 won't pass (because no letters are allowed)发布于 2016-10-07 15:24:20
您需要添加这样的可选模式:
^(199[0-9]|200\d|201[0-8])(0[1-9]|1[0-2])(0[1-9]|1\d|2\d|3[01])(?:\s+(\d+(?:[.:]\d+)+))?$(?:\s+(\d+(?:[.:]\d+)+))?部分匹配以下的1或0序列:
\s+ -1或更多空白空间(\d+(?:[.:]\d+)+) -捕获组匹配\d+ -1或更多位数(?:[.:]\d+)+ -1或更多的.或:序列后面跟着一个或更多位数
注意,您可以使用{min,max}限制量词而不是+来进一步调优。比方说,要匹配1到3位数字,可以使用\d{1,3}。
发布于 2016-10-07 15:21:50
试试这个正则表达式:
((199)[0-9]|200[0-9]|201[0-8])(0[1-9]|1[0-2])(0[1-9]|1\d|2\d|3[01]) (?:(?:\d+(?:\.|:|$)){1,4})?最后一部分将接受模式{位}{点/冒号/字符串的结尾}4次(您可以调整它)。
另外,我想提到的是,我不知道整个用例(对上述用例进行了测试),它可能需要一些调整。
https://stackoverflow.com/questions/39920561
复制相似问题