繁体   English   中英

使用Regex从逗号分隔列表中删除值

[英]Removing value from a comma seperated list with Regex

我在使用正则表达式从逗号分隔列表中删除值时遇到困难; 该值可能在列表中的任何位置,我当前似乎不起作用的解决方案是:

var val = "455";
    sList = sList
        .replace(new RegExp("\b"+val,""))
        .replace(new RegExp("\b"+val+",(.+)"),"$1")
        .replace(new RegExp("\b(.+),"+val),"$1")
        .replace(new RegExp("(.*),"+val+",(.+)"),"$1,$2");

清单可以是:

var sList ="455" || "val1,val2,455,val4,valn" || "455,val2,val3,valn" || "val1,val2,val3,455";

有人可以建议吗?

非常感谢,亚历克斯

正如JNYRanger所建议的那样,用逗号分隔字符串,删除值然后用逗号联接结果数组更为简单:

var str= "val1,val2,455,val4,valn";

str = str.split(',').filter(function (i) { return i !== '455' }).join(',');

要使用正则表达式,您可以简单地列出所有可能性,如下所示:

/^455(?:,|$)|,455(?=,|$)/

例:

var re = new RegExp("^" + val + "(?:,|$)|," + val + "(?=,|$)");

str = str.replace(re, '');

有些人喜欢使用splitjoin

var keep = [];
"val1,val2,455,val4,valn".split(",").forEach(function(val) {
  if (val !== "455") keep.push(val);
});
keep.join(",");

将产生:

"val1,val2,val4,valn"

像我这样的其他人则更喜欢使用正则表达式的match ,将上面的split(",")替换为match(/[^,]+/g)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM