我正在寻找一个正则表达式来验证以下格式AaaD-DDMMYY-HH-MM虽然下面的表达式适用于所有在线测试http://www.freeformatter.com/regex-tester.html它在应用程序的前端不起作用,这使我们能够输入预设的正则表达式。
我们正在尝试使用正则表达式来允许这些日期范围010120到311299(JAN 01 1920到DEC 31 1999)。
请协助更好的REGEX
要匹配的样本输入是aadd-111199-01-01
此输入aadd-111100-01-01不应匹配
^(([A-ZA-Z] {4} - )+(0 [1-9] | 1 [0-9] | 2 [0-9] | 3 [0-1])+( 0 [1-9] | 1 [0-2])+(([2-9] [1-9]) - )+(\ d {2} - )+(\ d {2}))$ < / p>
我试图更新正则表达式的前端应用程序是用java编写的
答案 0 :(得分:0)
这是一个稍微清理过的版本,虽然我不确定它是否能解决您的应用程序前端无法使用RegEx的问题:
^(([a-zA-Z]{4})-(0[1-9]|1[0-9]|2[0-9]|3[0-1])(0[1-9]|1[0-2])([2-9][1-9])-(\d{2})-(\d{2}))$
你不应该在捕获组之后分配转发器(每个转发后都有'+')。当你这样做时,如果重复该组的内容,则只在后向引用中捕获最后一次迭代(在你的字符串的情况下,我认为重复是不可能的,但你假设捕获组需要存在“至少曾经“,但由于捕获组只捕获它所包含的内容,因此它本身并不意味着需要量词的字符或字符组)。如果需要,重复(例如'+'或'*'或{n})在内部更有意义。
你在捕获组中也有连字符,这不太可能(?)你想要什么,因为它使得后向引用内容的解析更具挑战性。但除此之外,给定的RegEx将您的示例字符串与PCRE RegEx匹配。您创建的前端应用程序是什么?它是否使用PCRE或其他一些RegEx风味(here是各种RegEx风味的良好参考)?如果您使用正则表达式进行大量工作,我还建议使用RegEx Buddy工具。
另外,就像@pzp提到的那样,使用RegEx,检测每个月的正确日期数是一项挑战。如果你想验证给定的日期,那么我会建议一些库在RegEx通过格式验证后检查日期。例如,如果您在应用程序的前端使用JavaScript,则可以查看Moment.js或Datejs。