Nodejs 正则获取银行账单
Nodejs正则获取银行账单的消费记录,其实就这么简单:
'use strict'; var _ = require('lodash'); var moment = require('moment'); module.exports.execute = function (str) { /** * 清理数组 * @param {[type]} arr [description] * @param {[type]} value [description] * @return {[type]} [description] */ var clean = function(arr,value) { for (var i = 0; i < arr.length; i++) { if (arr[i] == value) { arr.splice(i, 1);//返回指定的元素 i--; } } return arr; }; var result = {}; var parts = str.match(/<tbody>(.+?)<\/tbody>/g); parts = parts.map(function (p) { var t = p.replace(/ /g,'')//去掉全部中文字符间的空格 .replace(/<[^>]*>/g, ' ')//去掉全部html标签 .replace(/ /g,' ')//将 替换为一个空格 .replace(/ +/g, ' ');//将多个空格替换为一个空格 return t.split(' ').length > 13 ? t : ''; }); parts = clean(parts,''); var parts1 = parts[3].split(' '); parts1 = parts1.slice(13,parts.length - 1); var records1 = _.chunk(parts1,7); var parts2 = parts[4].split(' '); parts2 = parts2.slice(13,parts2.length - 1); var records2 = _.chunk(parts2,7); result.records = []; _.forEach([records1,records2], function (t) { _.forEach(t,function(r){ var record = new Record(); record.rtime = moment([r[1], '00:00:00'].join(' '), 'YYYY/MM/DD HH:mm:ss').unix(); record.money = r[4]; record.content = r[2].replace(/ /g,''); result.records.push(record); }) }); return result; };
推荐使用mocha进行测试一下。
版权声明
由 davidzhang创作并维护的 Gowhich博客采用创作共用保留署名-非商业-禁止演绎4.0国际许可证。
本文首发于 博客( https://www.gowhich.com ),版权所有,侵权必究。
本文永久链接: https://www.gowhich.com/blog/633
版权声明
由 davidzhang创作并维护的 Gowhich博客采用创作共用保留署名-非商业-禁止演绎4.0国际许可证。
本文首发于 Gowhich博客( https://www.gowhich.com ),版权所有,侵权必究。
本文永久链接: https://www.gowhich.com/blog/633