一个正则的替换不会写,求指点。

ximibao 2016-09-14 09:29:09
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('解析数据失败');
}
}
===================================================================
...全文
174 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
ximibao 2016-09-14
  • 打赏
  • 举报
回复
引用 2 楼 jslang 的回复:
alert("160914076".replace(/^..(\d{4}).(\d{2})$/, '$1$2'));
多谢给出的正解。
ximibao 2016-09-14
  • 打赏
  • 举报
回复
number:m[1].replace(/^..(\d{4}).(\d{2})$/, '$1$2'), 刚才多弄了一个符号,现在行了。正常了。多谢。高手。
ximibao 2016-09-14
  • 打赏
  • 举报
回复
引用 2 楼 jslang 的回复:
alert("160914076".replace(/^..(\d{4}).(\d{2})$/, '$1$2'));
能否写成一个标准的格式啊。如number:m[1].replace(/^(\d{8})(\d{3})$/, '$1-$2'), 这样,试着用你的套用,导致程序无法运行。
天际的海浪 2016-09-14
  • 打赏
  • 举报
回复
alert("160914076".replace(/^..(\d{4}).(\d{2})$/, '$1$2'));
ximibao 2016-09-14
  • 打赏
  • 举报
回复
附一个正确的,但不能用到这条的写法。 number:m[1].replace(/^(\d{8})(\d{3})$/, '$1-$2'), <row expect="20160914071" opencode="9,2,1,3,3" opentime="2016-09-14 17:50:57" /> <row expect="20160914070" opencode="1,1,1,8,8" opentime="2016-09-14 17:40:57" /> <row expect="20160914069" opencode="8,5,7,9,7" opentime="2016-09-14 17:30:58" /> number:m[1].replace(/^(\d{8})(\d{3})$/, '$1-$2'),

87,910

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧