2010-04-05 87 views
-1

正則表達式必須在讀取和未讀取中刪除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被替換爲空。

在現實生活中......

http://userscripts.org/scripts/show/73562
http://userscripts.org/scripts/review/

... ID不與任何替代。

爲什麼?

+1

你的問題很難理解。你能製作一個5行左右的腳本來演示你的問題嗎?如果是這樣,請將您自包含的示例代碼與您獲得的輸出以及您想要的輸出一起發佈(不在其他站點上)。 – 2010-04-05 20:41:30

+0

感謝您的社交技巧幫助 – 2010-04-05 20:48:51

回答

1

你的問題很難理解,我不認爲它清楚地解釋你需要做什麼和錯在哪裏。我不確定這些鏈接是否被破解。

我想我明白你的意思了,但我可能是錯的。

如果你有一個像

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

一個string其中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); 

您使用兩次相同的正則表達式,那麼爲什麼不救呢?

如果您想知道爲什麼它不會替代JUST「674」以及「674」或「,675」......的實例,那是因爲您沒有編寫正則表達式來替換它!你只用逗號覆蓋它。

如果這是你正在嘗試做的,將」 674" 和‘674’,而只是普通的‘674’與空然後在這裏是一個正則表達式,將匹配所有這些:

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

?匹配前面的字符0或1次。

如果您只需要匹配發生withing()|()的實例,那麼調整前面的正則表達式非常容易,我將把它作爲讀者的練習。