正则表达式 - 使用可选字符解析日期

时间:2018-05-02 09:59:36

标签: regex

我尝试从格式为Failed to load http://localhost/angular5/lesson2.pdf: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:4200' is therefore not allowed access. 的字符串中解析日期。我的正则表达式是dd/MM/yyyy

问题是,当我有一些额外的字符,如\d{2}/\d{2}/\d{4}或任何其他字符不是数字或dd/ MM /yyyy时,如何提取日期字符串?

1 个答案:

答案 0 :(得分:1)

[^\d\/]*将匹配0到N个非数字或斜杠字符。但是我不确定你真正想要的是什么 - 如果你传递了大量的文字,它可能比你期望的要多得多。最好限制你愿意通过的额外字符的种类(例如,只有空格?),这样你就可以在无效输入上更可靠地失败。

(然后,为了提取日期,你只想在两个数字部分的每一个周围放置捕获的parens,并在匹配后将它们连接在一起)

所以答案可能是

(\d{2})[^\d\/]*\/[^\d\/]*(\d{2})[^\d\/]*\/[^\d\/]*(\d{4})

(虽然逃避要求和捕获方法可能会因您的语言/注册库而异 - 这可以在perl中使用。您也可以使它更灵活,如果您愿意,可以允许一位数天和几个月。 )