regexp必须在read和unread中删除,id或id。
GM_setValue('unreadids', unreadids.replace(new RegExp('('+id+',)|(,'+id+')', 'i'),''));
GM_setValue('readids', readids.replace(new RegExp('('+id+',)|(,'+id+')', 'i'), ''));
在RX Toolkit中,(,1 | 1,)用于测试,1或1被替换为空。
在现实生活中......
http://userscripts.org/scripts/show/73562
http://userscripts.org/scripts/review/
... id不会被替换。
为什么?
答案 0 :(得分:1)
你的问题有点难以理解,我认为这不清楚地解释你需要做什么和出了什么问题。我不确定这些链接是否会被破坏。
我想我明白你的意思,但我可能错了。
如果您有像
这样的字符串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”之外它为什么不替换JUST“674”的实例......那就是因为你没有写一个正则表达式来代替它!你的只用逗号覆盖它。
如果那是你要做的,替换“,674”和“674”,只用“674”替换为null,那么这里是一个匹配所有这些的正则表达式:
var expr = new RegExp(',?' + id + ',?', 'gi');
?匹配前面的字符0或1次。
如果你只需匹配发生withing()|()的实例,那么很容易调整前面的正则表达式,我将把它留给读者练习。