JavaScript正则表达式提取首个HH:MM格式时间前的文本
提取时间戳前文本的JavaScript实现
需求说明
需要解析以下格式的预订文本:
14687 - Project foobar, homeOffice 7:40 - 13:59
436 - Project barfoo, office 12:49 - 22:00
目标是提取首个符合\d?\d:\d\d格式(无前置零的24小时制HH:MM)的时间戳之前的所有文本,每个条目内时间戳可能出现1-2次。
实现方案
利用正则表达式的正向预查功能,匹配字符串开头到第一个目标时间戳之前的内容,具体代码如下:
// 待处理的预订文本数组 const bookingEntries = [ '14687 - Project foobar, homeOffice 7:40 - 13:59', '436 - Project barfoo, office 12:49 - 22:00' ]; // 正则规则:捕获开头到第一个目标时间戳前的所有内容 const prefixRegex = /^(.*?)(?=\d?\d:\d\d)/; // 遍历处理每个条目 bookingEntries.forEach(entry => { const matchResult = entry.match(prefixRegex); if (matchResult) { // 去除末尾多余空格后输出结果 const extractedText = matchResult[1].trim(); console.log(extractedText); } else { console.log('未找到符合格式的时间戳'); } });
正则解析
^:锚定字符串起始位置(.*?):非贪婪模式捕获任意字符,确保只取到第一个时间戳之前的内容(?=\d?\d:\d\d):正向预查,匹配你定义的时间格式但不将其包含在捕获结果中,保证只提取时间前的文本
运行上述代码后,会输出:
14687 - Project foobar, homeOffice 436 - Project barfoo, office
内容的提问来源于stack exchange,提问作者tzippy
相关产品推荐
相关产品推荐

