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