如何在Flex 4.5中以24小时格式验证正则表达式的时间?

时间:2013-12-23 10:12:07

标签: regex flex flex4 flex3 flex4.5

var regex1:RegExp=/([01]?[0-9]|2[0-3]):[0-5][0-9](\\s)(?i:)(am|pm)/;      
 var fo:String = "12:00 AM";  
 var ismatched:Boolean = regex1.test(fo);  
 trace(ismatched);

它在控制台上打印的结果是错误的。

我希望Regexp忽略分钟与上午和下午之间的空间。

我想验证时间格式HH:MM AM / PM

  • 正则表达式必须验证格式,如“12:00 AM”,“12:10 am”,“11:10 am”,“11:10 pm”,“11:15 PM”。

  • 正则表达式必须为每一个都写成。

  • 它必须忽略AM,PM之前的空格,例如:“11:10 AM”。

3 个答案:

答案 0 :(得分:0)

我不确定flex,但在Java中,不区分大小写的标志必​​须没有冒号,即(?i)而不是(?i:)

哦,空白组需要量词:(\\s*)(\\s?)而不是(\\s),具体取决于您要忽略的空格数。

是的,你需要所有这些小组捕获吗?

另一个注意事项:根据我上面提到的错误进行修正后,您的表达式仍会允许23:00 AM这样的时间,因此您可能希望将表达式扩展为仅允许[0]?[0-9]|1[0-2],当AM或PM时预期。

更新:根据flex文档,您的am / pm查询看起来应如下所示:(?i:(am|pm))(文档说(?option:expression)

另外我不知道你是否需要在Flex中逃避反斜杠,所以请检查。如果您不必转义它,(\\s?)将匹配“反斜杠,可选地后跟字母s”而不是可选的空格。

答案 1 :(得分:0)

如果您需要同时匹配“上午11点10分”和“上午12:00”,您的空白区必须是可选的,您需要将\ s更改为\ s吗?

答案 2 :(得分:0)

以下表达式适用于AM / PM或没有它们的所需验证。

/(1[012]|[1-9]):[0-5][0-9](\s)?(?i)(am|pm)?/