Javascript 使用正则表达式从日期和时间获取时间
如何使用正则表达式从2016年7月16日12:05:00 AM<代码>中提取Javascript 使用正则表达式从日期和时间获取时间,javascript,regex,Javascript,Regex,如何使用正则表达式从2016年7月16日12:05:00 AM中提取12:05 AM 我已经走了这么远 test = "7/16/2016 12:05:00 AM" test.match(/^(\S+) (.*)/)[2] > "12:05:00 AM" 但我不知道如何删除秒。另外,如果有更简单/更有效的方法来做我正在尝试做的事情,请让我知道 我宁愿不依赖第三方库,比如moment.js 注意:我希望的输出是12:05 AM,而不仅仅是12:05这是一种更简单的方法: var time
12:05 AM
我已经走了这么远
test = "7/16/2016 12:05:00 AM"
test.match(/^(\S+) (.*)/)[2]
> "12:05:00 AM"
但我不知道如何删除秒。另外,如果有更简单/更有效的方法来做我正在尝试做的事情,请让我知道
我宁愿不依赖第三方库,比如moment.js
注意:我希望的输出是
12:05 AM
,而不仅仅是12:05
这是一种更简单的方法:
var time = test.split(' ')[1]
time = time.substring(0, time.length - 3)+' '+test.split(' ')[2]
此外,如果你需要与日期和时间工作,我会建议
这是一种更简单的方法:
var time = test.split(' ')[1]
time = time.substring(0, time.length - 3)+' '+test.split(' ')[2]
此外,如果你需要与日期和时间工作,我会建议
明确查找数字和冒号,在匹配am/pm之前去掉最后两个。我们还将第二个小时数字设置为可选,以防与“下午3:14:16”匹配:
要注意正则表达式的完整性,您还可以使用大括号来确定要计数的位数(上面我没有提到,因为只有1-2个字符时,最后会有更多字符)。以下和以上内容将匹配同一字符串:
var matches = test.match(/(\d{1,2}:\d{2}):\d{2}(\s[ap]m)/i;
明确查找数字和冒号,在匹配am/pm之前去掉最后两个。我们还将第二个小时数字设置为可选,以防与“下午3:14:16”匹配:
要注意正则表达式的完整性,您还可以使用大括号来确定要计数的位数(上面我没有提到,因为只有1-2个字符时,最后会有更多字符)。以下和以上内容将匹配同一字符串:
var matches = test.match(/(\d{1,2}:\d{2}):\d{2}(\s[ap]m)/i;
一个简单而简短的替代方法是匹配不需要的部分,并用空字符串替换它们
test.replace(/^\S*\s*|:\d\d(?!:)/g, "")
说明:
-匹配日期和第一个空格^\S*\S*
-匹配秒及其前面的冒号;负前瞻会阻止模式与分钟数匹配:\d\d(?!:)
-“全局”标志;需要这个,因为我们有两个火柴要更换g
window.go=function(){
var输入=document.getElementById(“输入”).value;
var output=input.replace(/^\S*\S*|):\d\d(?!:)/g,“”;
document.getElementById(“输出”).value=output;
};代码>
点击我!
一个简单而简短的替代方法是匹配不需要的部分,并用空字符串替换它们
test.replace(/^\S*\s*|:\d\d(?!:)/g, "")
说明:
^\S*\S*
-匹配日期和第一个空格
:\d\d(?!:)
-匹配秒及其前面的冒号;负前瞻会阻止模式与分钟数匹配
g
-“全局”标志;需要这个,因为我们有两个火柴要更换
请在此处尝试:
window.go=function(){
var输入=document.getElementById(“输入”).value;
var output=input.replace(/^\S*\S*|):\d\d(?!:)/g,“”;
document.getElementById(“输出”).value=output;
};代码>
点击我!
搜索第一个冒号(:)并检索其前后的2个字符。搜索第一个冒号(:)并检索其前后的2个字符。您忘记将AM放回末尾:)您忘记将AM放回末尾:)您可能希望(\d{1,2}:\d{2})作为第一组。。。时间带有am/pm后缀这一事实表明,可能不存在“03:14:16 am”的前导0
,它可能是“3:14:16 am”,谢谢!我已经根据@StephenP的建议清理了它:test.match(/(\d{1,2}:\d{2}):\d{2}(\s[ap]m)/I)代码>@Katie,哈哈,我刚才对答案也做了同样的回答。干得好!您可能想要(\d{1,2}:\d{2})
作为您的第一组。。。时间带有am/pm后缀这一事实表明,可能不存在“03:14:16 am”的前导0
,它可能是“3:14:16 am”,谢谢!我已经根据@StephenP的建议清理了它:test.match(/(\d{1,2}:\d{2}):\d{2}(\s[ap]m)/I)代码>@Katie,哈哈,我刚才对答案也做了同样的回答。干得好!