js 正则表达式去数组重复异常 本帖最后由 lydehao2008 于 2014-09-17 01:29:12 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 var arr = "123,345,123,123", reg = /([^,]+)(?!.*,\1)/g, res = arr.match(reg); //下面就说一下,捕获组的捕获顺序。 //1:123首先被匹配到,但是因为后面有",123",所以被不被捕获 //2:去除刚刚未被捕获的1,第一个捕获组的内容变成23,而后面却没有",23"被匹配, //所以,23被捕获, //3:23被捕获,则下次匹配,把第一个123都跳过了, //4:再次获得的捕获组就是345了,正常。 //一直下去 //所以,如果我们想要验证,那么就是,如果arr的内容如下: arr = "123,345,123,123,23", res = arr.match(reg); //想象这个时候的结果? //345,3,123,23a //就说第一个123的匹配 //123会被",123"的因素被过滤 //23会被",23"的因素被过滤 //3会被",345"中的",3"被过滤。 //OK,其他的都可以被理解了吧? console.log(res); //所以,关于数组去重,要考虑边界的 //然后,再经过一些特殊的处理,比如下面这样: //仅供参考 arr = ","+[123,345,123,123,23].join(",,")+","; reg = /(,[^,]+,)(?!.*\1)/g; res = arr.match(reg); console.log(res.join("").slice(1,-1).split(",,")); 各位大神 帮帮忙。。。 【关于https】100分求解一个问题 在那里可以查到Javascript版本所支持的函数 真正的js全屏 急-IE状态栏的问题 请问如何实现微软左部的导航菜单那样的效果呢? 哪儿有JAVASCRIPT手册???? javascript里面可以得到IE的临时目录位置吗 网页中实现一个有向图的编辑器 js alert()调用了一次窗口弹出两次 jqgrid 异常TypeError: obj is undefined ret = obj[expr]; echarts 怎么动态的为iption中的Series添加数据
reg = /([^,]+)(?!.*,\1)/g,
res = arr.match(reg); //下面就说一下,捕获组的捕获顺序。
//1:123首先被匹配到,但是因为后面有",123",所以被不被捕获
//2:去除刚刚未被捕获的1,第一个捕获组的内容变成23,而后面却没有",23"被匹配,
//所以,23被捕获,
//3:23被捕获,则下次匹配,把第一个123都跳过了,
//4:再次获得的捕获组就是345了,正常。
//一直下去
//所以,如果我们想要验证,那么就是,如果arr的内容如下:
arr = "123,345,123,123,23",
res = arr.match(reg);
//想象这个时候的结果?
//345,3,123,23a
//就说第一个123的匹配
//123会被",123"的因素被过滤
//23会被",23"的因素被过滤
//3会被",345"中的",3"被过滤。
//OK,其他的都可以被理解了吧? console.log(res);
//所以,关于数组去重,要考虑边界的
//然后,再经过一些特殊的处理,比如下面这样:
//仅供参考
arr = ","+[123,345,123,123,23].join(",,")+",";
reg = /(,[^,]+,)(?!.*\1)/g;
res = arr.match(reg);
console.log(res.join("").slice(1,-1).split(",,"));