SORU
22 Temmuz 2009, ÇARŞAMBA


JavaScript/düzenli ifade değiştirin

Verilen bu fonksiyonu

function Repeater(template) {

    var repeater = {

        markup: template,

        replace: function(pattern, value) {
            this.markup = this.markup.replace(pattern, value);
        }

    };

    return repeater;

};

Nasıl this.markup.replace() yerine küresel yapabilirim? Sorun burada işte. Eğer kullanırsam bu gibi:

alert(new Repeater("$TEST_ONE $TEST_ONE").replace("$TEST_ONE", "foobar").markup);

Uyarı değeri "$TEST_ONE falanca".

Eğer aşağıdaki Repeater değiştirirsem, o zaman hiçbir şey Krom yerine:

function Repeater(template) {

    var repeater = {

        markup: template,

        replace: function(pattern, value) {
            this.markup = this.markup.replace(new RegExp(pattern, "gm"), value);
        }

    };

    return repeater;

};

...ve uyarı $TEST_ONE $TEST_ONE.

CEVAP
22 Temmuz 2009, ÇARŞAMBA


Çift herhangi bir RegExp karakter (regexp için dize eğik çizgi için bir kez ve bir kez) kaçmak gerekiyor:

  "$TESTONE $TESTONE".replace( new RegExp("\\$TESTONE","gm"),"foo")

Aksi halde, yolun sonuna arar ve 'asla bulur ()'. TESTONE

Şahsen, bu nedenle regexp kullanarak dizeleri bina büyük bir hayranı değilim. Gerekli olan kaçan seviyesi içmek için neden olabilir. Diğerleri yukarıdaki diyagram yazarken ve içme gibi olsa da farklı hissediyor eminim.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • David MeShow

    David MeShow

    10 EKİM 2006
  • Snazzy Labs

    Snazzy Labs

    9 Aralık 2008
  • thenewboston

    thenewboston

    4 ŞUBAT 2008