js怎么循环取得正则表达式全局匹配的所有数据

lz455467578 2010-09-06 07:31:19
请教一个问题 js代码

/cart_item_\d+=(\d+)/g

匹配所有我想要的数据类型大概为 key=value

我只取value

以下这段代码 在ff中正常运行 在chrome ie 中都会陷入死循环



function calcItemCount(){
var ItemCount = 0;
do{
var results = /cart_item_\d+=(\d+)/g.exec(document.cookie);
//在ff中正则表达式会自动到上次匹配到的位置,然后匹配下一个,最后赋值。
//在chrome和ie中results一直不变,请问怎么样才能跨浏览器实现这个功能?
if(results == null) break;
ItemCount += parseInt(results[1]);
}while(1)
return ItemCount;
}
...全文
561 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
wz_307 2010-09-08
  • 打赏
  • 举报
回复
直接用match吧
/g可以直接return符合的数组
chendong_j 2010-09-07
  • 打赏
  • 举报
回复
可以用“=”号分割字符串把“=”前后的2个字符串变成1个数组
jackzypp 2010-09-07
  • 打赏
  • 举报
回复
ItemCount += parseInt(results[1])
如果考虑效率,这句应该是问题最大的,可以把所有的result放到一个array里面,循环结束了用jion,然后再eval。
感觉会快点。
-过客- 2010-09-06
  • 打赏
  • 举报
回复
不要在循环里声明变量,你那样写不慢才怪啊

function calcItemCount(){
var str = document.cookie;
var ItemCount = 0;
var reg = /cart_item_\d+=(\d+)/g;
var results;
do{
results = reg.exec(str);
if(results == null) break;
ItemCount += parseInt(results[1]);
}while(1)
return ItemCount;
}
  • 打赏
  • 举报
回复
换用match去做。

87,997

社区成员

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

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