2010-04-05 3 views
-1

regexp는 읽음과 읽지 않음에서 id 나 id를 제거해야합니다.간단한 regexp

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/review/

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

... ID는 아무것도 대체되지 않습니다.

왜?

+1

귀하의 질문은 이해하기가 매우 어렵습니다. 문제를 나타내는 5 줄 정도의 스크립트를 만들 수 있습니까? 그렇다면 여기에 포함 된 예제 코드를 다른 사이트가 아닌 게시하고 출력물과 원하는 출력물을 함께 게시하십시오. –

+0

사회 기술 도움에 감사드립니다. –

답변

1

귀하의 질문은 이해하기 어렵습니다. 귀하가해야 할 일과 잘못 된 것이 무엇인지 명확하게 설명하지는 않습니다. 링크가 깨 졌을 때 링크가 명확하게 나타나는지 확실하지 않습니다.

내가 무슨 뜻인지 알 것 같지만 잘못된 것 같습니다.

당신은) (674은 "ID가"이며,

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

같은 문자열은 당신이 "얻을" "와"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,"그냥 일반 "674"널 (null)와 다음 여기의 모든 일치하는 정규식입니다 :

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

? 선행 문자를 0 번 또는 1 번 일치시킵니다.

withing() |()에서 발생하는 인스턴스 만 일치시켜야하는 경우 앞의 정규식을 조정하기가 매우 쉽습니다. 독자의 연습 문제로 남겨 두겠습니다.