一个正则的替换不会写,求指点。
parse:function(str){
try{
//return getFromCaileWeb(str,15);
str=str.substr(0,200);
var reg=/<row expect="(\d+?)" opencode="([\d\,]+?)" opentime="([\d\:\- ]+?)"/;
var m;
if(m=str.match(reg)){
return {
type:25,
time:m[3],
number:m[1].replace(/^(\d{8})(\d{3})$/, '$1-$2'),
data:m[2]
};
}
}catch(err){
throw(析数据不正确');
}
}
},////////////
原数据规则是
<xml>
<row expect="160914076" opencode="5,6,6" opentime="2016-09-14 21:09:10" />
<row expect="160914075" opencode="2,4,6" opentime="2016-09-14 20:59:10" />
<row expect="160914074" opencode="1,2,6" opentime="2016-09-14 20:49:10" />
<row expect="160914073" opencode="2,2,4" opentime="2016-09-14 20:39:10" />
现在需要取160914076数值变成091476。
number:m[1].replace(/^(\d{8})(\d{3})$/, '$1-$2'),
上面这条正则规则不对。想求高手指点一下。
===============================================下面是调用的
function getFromCaileWeb(str, type){
str=str.substr(str.indexOf('<tbody id="openPanel">'), 120).replace(/[\r\n]+/g,'');
var reg=/<tr.*?>[\s\S]*?<td.*?>(\d+)<\/td>[\s\S]*?<td.*?>([\d\:\- ]+?)<\/td>[\s\S]*?<td.*?>([\d\,]+?)<\/td>[\s\S]*?<\/tr>/,
match=str.match(reg);
if(!match) throw new Error('数据不正确');
//console.log(match);
var number,_number,number2;
var d = new Date();
var y = d.getFullYear();
if(match[1].length==9 || match[1].length==8){number='20'+match[1];}else if(match[1].length==7){number='2014'+match[1];}else{number=match[1];}
_number=number;
if(number.length==11){number2=number.replace(/^(\d{8})(\d{3})$/, '$1-$2');}else{number2=number.replace(/^(\d{8})(\d{2})$/, '$1-0$2');_number=number.replace(/^(\d{8})(\d{2})$/, '$10$2');}
try{
var data={
type:type,
time:_number.replace(/^(\d{4})(\d{2})(\d{2})\d{3}/, '$1-$2-$3 ')+match[2],
number:number2,
data:match[3]
};
//console.log(data);
return data;
}catch(err){
throw('解析数据失败');
}
}
===================================================================