js抽取一段文字中有效信息

  • 先分行,然后从所需行信息中处理,判断正则,拼接
let str = `2022-06-23 08:44:12----信息:开始呼叫,地址:3,工号:103
2022-06-23 08:44:12----信息:呼叫号码:A001,地址:3,工号:103
2022-06-23 08:47:28----信息:开始呼叫,地址:3,工号:103
2022-06-23 08:47:28----信息:呼叫号码:A002,地址:3,工号:103
2022-06-23 08:48:34----信息:开始呼叫,地址:2,工号:102
2022-06-23 08:48:34----信息:呼叫号码:A003,地址:2,工号:102
2022-06-23 08:50:10----信息:开始呼叫,地址:4,工号:104
2022-06-23 08:50:11----信息:呼叫号码:A004,地址:4,工号:104
2022-06-23 08:52:05----信息:开始呼叫,地址:5,工号:105
2022-06-23 08:52:06----信息:呼叫号码:A005,地址:5,工号:105
2022-06-23 08:54:07----信息:开始呼叫,地址:2,工号:102
2022-06-23 08:54:08----信息:呼叫号码:A006,地址:2,工号:102
2022-06-23 08:55:16----信息:开始呼叫,地址:4,工号:104
2022-06-23 08:56:30----信息:开始呼叫,地址:4,工号:104
2022-06-23 08:56:30----信息:呼叫号码:A007,地址:4,工号:104
2022-06-23 08:57:16----信息:开始呼叫,地址:3,工号:103`;

var lines = str.split('\n');
//console.log(lines);
let lineExp = /(呼叫号码)/;
let timeExp = /^\d{4}-\d{1,2}-\d{1,2}\s\d{2}\:\d{2}\:\d{2}/; // Y-m-d H:i:s 时间匹配
let haoExp = /[A-Z]\d{3}/; // 加上以字母开头怎么不行.....????
let gonghaoExp = /:\d{3}/; // [\n] 换行 不能用换行匹配,最后一个换行匹配不到

let { timeRes,haoRes,gonghaoRes,lineRes } = new Array();
let resArr = [];
console.log(resArr);
//return;

lines.forEach((item,index) => {
    //console.log(item);
    if(lineExp.test(item)){
        lineRes = [];
        //console.log('匹配到',item);
        timeRes = timeExp.exec(item);
        if(timeRes){
            //console.log(timeRes[0]);
            lineRes.push(timeRes[0]);
        }

        haoRes = haoExp.exec(item);
        if(haoRes){
            //console.log(haoRes[0]);
            lineRes.push(haoRes[0]);
        }

        gonghaoRes = gonghaoExp.exec(item);
        if(gonghaoRes){
            //console.log(gonghaoRes[0]);
            lineRes.push(gonghaoRes[0].substring(1));
        }

        resArr.push(lineRes);

    }
})

console.log(resArr);
console.log(resArr.length);
return;

posted @ 2022-06-24 00:57  盘思动  阅读(137)  评论(0编辑  收藏  举报