首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用于验证日期并以DDMMYY格式限制日期范围的regex

用于验证日期并以DDMMYY格式限制日期范围的regex
EN

Stack Overflow用户
提问于 2015-11-30 22:56:24
回答 1查看 1.3K关注 0票数 0

我正在寻找一个正则表达式来验证以下格式AaaD,尽管下面的表达式在所有在线测试http://www.freeformatter.com/regex-tester.html上都有效,但它在应用程序的前端不工作,这允许我们输入一个预置正则表达式。

我们正在尝试使用regex来允许这些日期范围从010120到311299 (1920年1月1日至1999年12月31日)。

请协助更好的REGEX

要匹配的示例输入是aadd-111199-01-01。

此输入aadd-111100-01-01不应匹配。

^((a-zA-Z{4}-)+(01-9|10-9|20-9|30-1)+(01-9|10-2)+((2-9)-)+(\d{2}-)+(\d{2}))$

我试图更新regex的前端应用程序是用java编写的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-01 01:20:32

这里有一个稍微清理过的版本,但我不确定它是否会解决RegEx无法在应用程序前端工作的问题:

代码语言:javascript
运行
复制
^(([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风味(这里是各种RegEx口味的良好参考)?如果您使用正则表达式做了大量工作,我还推荐使用RegEx巴迪工具。

而且,就像@pzp提到的那样,使用RegEx来检测每个月的正确日期是很困难的。如果您想要验证给定的日期,那么我建议一些库在它通过RegEx格式验证之后检查它的日期。例如,如果在应用程序的前端使用JavaScript,则可以签出Moment.js达特杰

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34009551

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档