我想检测一串文字,以便使用javascript从我的网页内容中获取时间。正则表达式应该能够匹配以下字符串的所有出现。
我尝试使用以下两个正则表达式,但它们尚未涵盖所有场景。
[0-9][0-9]:[0-9][0-9] (am|pm|AM|PM)
^(?:(?:31(\/|-|\.)(?:0?[13578]|1[02]|
(?:Jan|Mar|May|Jul|Aug|Oct|Dec)))\1|
(?:(?:29|30)(\/|-|\.)(?:0?[1,3-9]|1[0-2]|
(?:Jan|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec))\2))(?:(?:1[6-9]|
[2-9]\d)?\d{2})$|^(?:29(\/|-|\.)(?:0?2|(?:Feb))\3(?:(?:(?:1[6-9]|
[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|
[3579][26])00))))$|^(?:0?[1-9]|1\d|2[0-8])(\/|-|\.)(?:(?:0?[1-9]|
(?:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep))|(?:1[0-2]|
(?:Oct|Nov|Dec)))\4(?:(?:1[6-9]|[2-9]\d)?\d{2})$
我使用RegEx已经太过分了,但它与上面的一些例子很匹配。关于我应该如何进行的任何建议?
答案 0 :(得分:1)
请尝试:
/((?:(?:\d{1,2}(?:\/|-)){2}\d{4}\s+|\d{2}(?:rd|th|nd)\s+(?:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s+\d{4}\s+|)\d{2}:\d{2}(?:\s*(?:AM|PM))?\s+[IEC]ST)/g