js混合字符串提取时间, JavaScript字符串提取时间

最近帮同事一个忙, 根据一堆混合字符串, 给时间和备注单独一行, 利于整理表格
那么就涉及到从混合字符串中提取出时间, 然后再把两个时间之间的字符串拼接

  • 先看字符串

2022-03-29 13:10:40Australia Delivered2022-03-28 09:58:48Sydney Express pickup2022-03-21 10:55:49Sydney finish customs clearance2022-03-14 14:00:39Sydney Customs clearance in progress2022-03-14 11:33:15Sydney Flight arrived2022-03-13 23:09:30hongkong 航班已起飞2022-03-11 20:19:22hongkong 柜子已经提到,已经安排拆柜,预计3.13日航班2022-03-10 17:40:48hongkong 预计3月11日提柜2022-03-09 11:08:43hongkong由于香港疫情,很多拖车被政府征收,导致柜子在港无法提回来,航 展开详情2022-03-09 11:06:41hongkong由于香港疫情,很多拖车被政府征收,导致柜子在港无法提回来,航 展开详情2022-03-07 19:16:47CHINA Origin Scan2022-03-04 17:55:39深圳 已安排下港,预计3月9日起飞2022-03-04 17:53:21CHINA Origin Scan2022-03-04 17:29:34CHINA The package has been picked up from the sender2022-03-04 10:15:10CHINA Order information received


期待效果, 时间一行, 备注一行
那么就先分析一波正则

  • 年: 四位数字就ok, 比如[0-9]{4}
  • 月: 一共十二个月, 分两种情况, 01-09, 10-12, 所以得(0[1-9]1[0-2])
  • 日: 最大就31天, 01-09, 10-19, 20-19, 30-31, 所以可以写(0[1-9]|[12][0-9]|3[01])
  • 时: 最大就24小时, 可分为(0?[0-9]|1[0-9]|2[0-3])
  • 分: 最大是59分, 可以做为(0?[0-9]|[1-5][0-9])
  • 秒: 同上, 最大就是59秒
    年月日的正则可分为var reg = /^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])$/;
    console.log(reg.test('2022-05-17')
    时分秒的正则可分为var reg = /^(0?[0-9]|1[0-9]|[2][0-3]):(0?[0-9]|[1-5][0-9]):(0?[0-9]|[1-5][0-9])$/;
    console.log(reg.test('23:59:59')
    但是我感觉这样写太麻烦, 我又不是校验格式, 所以就用到match()方法
    比如我要校验一串混合字符var str = '2022-03-29 13:10:40Australia Delivered2022-03-28 09:58:48Sydney Express pickup2022-03-21 10:55:49Sydney finish customs clearance'
    可以分析一波
  • \d为校验数字, {xxx}可以校验多少个字符, /g是全局, 那么
    console.log(str.match(/\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}/g))这样不就行了?
    看控制台结果
    match方法.png

    是不是很快就把时间提取出来了, 然后再通过字符串切割, 不就达到了效果吗
// 我这里假设str是等于上面的混合字符串哈, 因为在这里复制太长, 网页显示是直接横向滚动条, 影响网友阅读
var str = "开头的字符串";
var arr = str.match(/\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}/g);
var arr1 = [];
for(let i = 0; i < arr.length; i++) {
    if(str.indexOf(arr[i]) != -1) {
        // 这里后面加19是因为时间格式加上空格, 是19位数, 如2022-05-17 18:15:00
        arr1.push(str.slice(str.indexOf(arr[i]), str.indexOf(arr[i])+19);
        // 这里的第二次push应该可以看懂吧, 第一个push, 添加进去的是时间,
        // 第二个push, 添加进去的是上一个时间后, 和下一个时间中间的文字, 也就是上面说的备注
        arr1.push(str.slice(str.indexOf(arr[i])+19, str.indexOf(arr[i+1])));
    }
}
console.log(arr1)

让我们看一下结果


结果.png

是不是达到了想要的效果, 后面想怎么来就怎么来, 一个for循环搞定
如果对你有帮助, 动动小手点个赞哦

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,287评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,346评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,277评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,132评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,147评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,106评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,019评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,862评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,301评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,521评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,682评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,405评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,996评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,651评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,803评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,674评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,563评论 2 352

推荐阅读更多精彩内容