0

次のテキストがあります。

Title %%% info@mydomain.com

次のスクリプトがあります。

update: function(){
    this.AjaxImage(this.mainImage.current);
    // /[$-/:-?{-~!"^_`\[\]]/ Updated 05.22.10, changed .replace(/%%%[^%]*/,' ') to .replace(/%%%.*/,' ') because an escaped space (%20) was causing markup to appear on the page. DE 
    // only show the title and year below the image, %%% is the delimiter
    var caption = this.detailBin[this.mainImage.current]
                      .innerHTML.replace(/%%%.*/,' '); 
    this.overlayCaption('hide');
    this.controls.counter.update(this.mainImage.current+1);
    this.utilities.updateHash(this.mainImage.current+1);
    this.captionUnderlay.update(caption);

    // show everything under "more info"
    this.captionText = this.detailBin[this.mainImage.current]
                           .innerHTML.replace('%%%',' '); 
    this.hasMoreInfo = (this.captionText.length > caption.length+9) ? true : false;
    if(!this.hasMoreInfo) 
        this.controls.captionToggle.hide();
    else 
        this.controls.captionToggle.show();
}

this.captionUnderlay.update(this.detailBin[this.currentImage]
                                .innerHTML.replace(/%%%[^@]*/," "));

上記の captionUnderlay が表示され@mydomain.comます。

以下のkludgeを使用して問題を解決できますが、問題が何であるかを理解したいです(他の人が書いたコードを引き継いでいます)。

[^@]正規表現から削除すると、すべてが表示されます。テキストに a がない限り、代わり[^@]に使用すると問題なく動作します。[^}]}

これを防ぐにはどうすればよいですか?

4

1 に答える 1