一个简单的正则表达式

时间:2010-04-05 20:16:52

标签: javascript firefox greasemonkey

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不会被替换。

为什么?

1 个答案:

答案 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()|()的实例,那么很容易调整前面的正则表达式,我将把它留给读者练习。