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(",,")); 求解释!!!! javascript 编写代码,仿qq相册上传图片 extjs中怎样将文本框和复选框组合成一个组件呢? 求解 哪位老大给解释一下jQuery的queue的用法? [菜鸟]JQuery无废话系列教程二的疑问 有直接提取网页内容上传的IE辅助工具吗? JAVASCRIPT字符串转换问题。 一个<a>元素,如果点击时只是为了驱动一个js函数,该怎么写? 请问怎么禁止左键选中网页中的内容啊? 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(",,"));