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”。
正则表达式必须为每一个都写成。
答案 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)?/