如果一个字符不匹配,则正则表达式无法匹配所有内容



我正在为日期-时间格式构建正则表达式,它应该允许将天写为d或dd,将月写为m或MM,将年写为yyyy,还可以将时间写为H或HH或H或HH,分秒,甚至将am或PM写为t或tt。所以这是我构建的正则表达式,除了一件小事:

(b(d{1,2}|[-/ :;]|M{1,2}|y{4}|h{1,2}|H{1,2}|m{1,2}|s{1,2}|t{1,2})b){5,13}

这让我可以写一些类似于";yyyy-M-dd";或";MM-yyyy-d H:mmtt";以及其他变体。问题是如果我写";yyyy-M-ddx";它将与";yyyy-M-dd";,并且不匹配";x〃;我需要这样,如果有些东西不匹配,那么其他的东西都不匹配。Regex有办法做到这一点吗?基本上,我需要一些东西来取消比赛,以防不匹配。

有可能吗?谢谢你的帮助。

将输入^的开始和输入$的结束锚添加到正则表达式的每一端:

^(b(d{1,2}|[-/ :;]|M{1,2}|y{4}|h{1,2}|H{1,2}|m{1,2}|s{1,2}|t{1,2})b){5,13}$

最新更新