Javascript 一个简单的regexp

Javascript 一个简单的regexp,javascript,firefox,greasemonkey,Javascript,Firefox,Greasemonkey,regexp必须在已读和未读状态下删除id或id GM_setValue('unreadids', unreadids.replace(new RegExp('('+id+',)|(,'+id+')', 'i'),'')); GM_setValue('readids', readids.replace(new RegExp('('+id+',)|(,'+id+')', 'i'), '')); 在RX工具箱中,用于测试的(,1 | 1,)1或,1被替换为零 在现实生活中 …id不会被任何内容

regexp必须在已读和未读状态下删除id或id

GM_setValue('unreadids', unreadids.replace(new RegExp('('+id+',)|(,'+id+')', 'i'),''));
GM_setValue('readids', readids.replace(new RegExp('('+id+',)|(,'+id+')', 'i'), ''));
在RX工具箱中,用于测试的(,1 | 1,)1或,1被替换为零

在现实生活中


…id不会被任何内容替换


为什么?

你的问题有点难理解,我不认为它清楚地解释了你需要做什么和什么是错的。我不确定链接是否因为断开而清晰

我想我明白你的意思,但我可能错了

如果你有一根像

var test = "(674,)|(,674)"
其中674是“id”,您正试图用“”替换“674”和“、674”,以获得“()|()”

然后,您的代码应该可以正常工作,除非您还需要“g”(全局)标志来替换所有实例

例如:

                    var test = "(674,)|(,674)";
                    var id = "674";
                    var expr = new RegExp('(' + id + ',)|(,' + id + ')', 'gi');
                    var b = test.replace(expr, '');
                    alert(test);
                    alert(b);
您使用同一个正则表达式两次,为什么不保存它呢

如果您想知道为什么除了“674”或“675”之外,它不替换“674”的实例……那是因为您没有编写正则表达式来替换它!你的只在上面加了逗号

如果您正试图这样做,请将“、674”和“674”替换为null,然后将普通的“674”替换为null,那么这里有一个正则表达式,它将匹配所有这些:

var expr = new RegExp(',?' + id + ',?', 'gi');
??与前面的字符匹配0或1次


如果您只需要匹配与ing()|()发生的实例,那么很容易调整前面的正则表达式,我将把它作为练习留给读者。

您的问题很难理解。您能否生成一个5行左右的脚本来演示您的问题?如果是这样的话,请在这里(而不是在其他网站)发布您的独立示例代码,以及您获得的输出和您想要的输出。感谢您在社交技能方面提供的帮助