простое регулярное выражение - PullRequest
0 голосов
/ 06 апреля 2010

Регулярное выражение должно удалять, 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/

... идентификатор не заменяется ничем.

Почему?

1 Ответ

1 голос
/ 06 апреля 2010

Ваш вопрос довольно сложен для понимания, я не думаю, что он четко объясняет, что вам нужно делать, а что нет. Я не уверен, что ссылки уточняются, поскольку они не работают.

Мне кажется, я понимаю, что вы имеете в виду, но я могу ошибаться.

Если у вас есть строка типа

var test = "(674,)|(,674)"

Где 674 - это "id", и вы пытаетесь заменить "674" и ", 674" на "" get "() | ()"

Тогда ваш код должен работать нормально, за исключением того, что вам нужен также флаг "g" (глобальный), чтобы заменить ВСЕ экземпляры.

Пример:

                    var test = "(674,)|(,674)";
                    var id = "674";
                    var expr = new RegExp('(' + id + ',)|(,' + id + ')', 'gi');
                    var b = test.replace(expr, '');
                    alert(test);
                    alert(b);

Вы используете одно и то же регулярное выражение дважды, так почему бы просто не сохранить его?

Если вам интересно, почему он не заменяет экземпляры JUST "674" в дополнение к "674" или ", 675" ... это потому, что вы не написали регулярное выражение для его замены! Ваш только покрывает это запятыми.

Если это то, что вы пытаетесь сделать, замените «, 674» и «674» и просто «674» на ноль, то вот регулярное выражение, которое будет соответствовать всем этим:

var expr = new RegExp(',?' + id + ',?', 'gi');

? соответствует предыдущему символу 0 или 1 раз.

Если вам нужно сопоставить только те случаи, которые происходят с with () | (), довольно легко настроить для этого предыдущее регулярное выражение, я оставлю это в качестве упражнения для читателя.

...