[英]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, '');
有些人喜欢使用split
和join
:
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.