我想从字符串"Last Updated on Jul 9 2019, 3:15 pm +08"
中提取时间
<div id="demo"></div>
<script>
var str = "Last Updated on Jul 9 2019, 3:15 pm +08";
var result = str.match(???);
if(result) {
document.getElementById("demo").innerHTML = result;
}
</script>
或者可以提取日期和时间,但以['Jul 9 2019','3:15pm']
我是使用正则表达式的新手,也不知道如何制定模式。预先感谢!
答案 0 :(得分:1)
您可以使用正向后视来查找字符串中的“ on”,抓住所有内容直到pm / am,然后在逗号和空格之间进行分割(假设格式一致):
const str = "Last Updated on Jul 9 2019, 3:15 pm +08"
console.log(str.match(/(?<=on ).*(p|a)m/)[0].split(', '))
请注意,积极的后向功能并非与所有浏览器都兼容,因此如果兼容性存在问题,我建议使用adiga's方法。
答案 1 :(得分:1)
您可以使用正则表达式/on ([^,]+),\s*(.*(?:am|pm))/
,其中一个用于捕获日期,另一个用于捕获时间
var str = "Last Updated on Jul 9 2019, 3:15 pm +08";
var result = str.match(/on ([^,]+),\s*(.*(?:am|pm))/);
result.shift();
console.log(result)
答案 2 :(得分:0)
可以不使用正则表达式来完成此操作(假设时间格式与您给出的示例相同)。像这样:
var str = "Last Updated on Jul 9 2019, 3:15 pm +08";
var onlyTime = []
onlyTime.push(str.split(' ').slice(3,6).join(' ').slice(0, -1));
onlyTime.push(str.split(' ').slice(6,8).join(''));
console.log(onlyTime)
答案 3 :(得分:-1)
如果使用正则表达式,则可以使用'\ d {1,2}:\ d {2}(am | pm)'查找日期字符串中的时间。使用\ d {1,2},您的数字介于1到60之间,使用(am | pm),您可以找到字符串'am'或字符串'pm'。