【发布时间】:2015-01-20 06:10:49
【问题描述】:
使用正则表达式匹配此模式 - 5h 到 6h,4am 到 9am,3pm 到 8pm,4h 到 9pm......
我已经有了正则表达式 - 5h, 4pm, 5am......
我想用这个正则表达式来匹配凌晨 4 点到 9 点。
like var reg_expr = (/(\d{1,2}?h$)|(\d{1,2}h(?=\s+))|(\d{1,2}:\d{2}([ap]m)?$)|(\d{1,2}:\d{2}([ap]m)(?=\s+))|(\d{1,2}:\d{2}(?=\s+))|(\d{1,2}([ap]m)?$)|(\d{1,2}([ap]m)(?=\s+))/gi)
这个 reg_expr 匹配 4h,5pm,8am.....
这个变量在凌晨 4 点到 9 点的比赛中使用,
like var reg_data = ((reg_expr)(/\s(to)(?=\s)/gi)(reg_expr))...
有可能吗???? 如果是,那么如何???
【问题讨论】:
-
不能直接组合两个正则表达式对象。您可以获取指定正则表达式的两个字符串并将这两个字符串组合起来,然后执行
var regex = new RegExp(str1 + str2)甚至var regex = new RegExp("(" + str1 + ")" + str2)。因此,基本上使用来自其他字符串变量的字符串操作来构建正则表达式字符串,然后从该组合字符串创建一个新的正则表达式。 -
str1 = "pattern(/s+)" msg = "模式模式匹配模式模式。" var re = new RegExp(str1, "g"); var temp = msg.match(re);在这种情况下 temp 为空...因为我添加 /s+ ,如何在模式后添加空格..????
-
如果你想将时间作为不同的值提取出来,那么首先用逗号分割字符串,然后用 "to" 分割字符串,包括每个分割中的可选空格。
标签: javascript regex