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

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, '');

07-24 09:22