SORU
11 Ocak 2009, Pazar


Nasıl JavaScript düzenli ifade eşleşen gruplar erişimi musunuz?

Alt programlama dilinde * sembolü olan bir dize regular expression ve sonra bir erişim kullanarak bir kısmını maç istiyorum:

var myString = "something format_abc"; // I want "abc"

var arr = /(?:^|\s)format_(.*?)(?:\s|$)/.exec(myString);

console.log(arr);     // Prints: [" format_abc", "abc"] .. so far so good.
console.log(arr[1]);  // Prints: undefined  (???)
console.log(arr[0]);  // Prints: format_undefined (!!!)

Neyi yanlış yapıyorum?


Hiçbir şey düzenli ifade yukarıdaki kod ile yanlış olduğunu fark ettim: bu karşı test ediyordum ki gerçek bir dize:

"date format_%A"

"%"Çok garip bir davranış, ama yeni bir tane açtım o yüzden bu soruyu doğrudan ilgili değildir . tanımsız olduğunu bildiriyorlar ^em>Why is a matched substring returning "undefined" in JavaScript?.


Sorunu olduğunu console.log alır parametrelerini gibi bir printf deyim, ve o zamandan beri dize olduğumu günlüğü ("%A") özel bir değeri olduğunu bulmaya çalışıyorum değer bir sonraki parametre.

CEVAP
11 Ocak 2009, Pazar


Bu gibi gruplar erişebilirsiniz:

var myString = "something format_abc";
var myRegexp = /(?:^|\s)format_(.*?)(?:\s|$)/g;
var match = myRegexp.exec(myString);
alert(match[1]);  // abc

Ve eğer birden çok varsa bunları ispat edebilirsin etti

match = myRegexp.exec(myString);
while (match != null) {
    // matched text: match[0]
    // match start: match.index
    // capturing group n: match[n]
    match = myRegexp.exec(myString);
}

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Matthew Morrill

    Matthew Morr

    15 EKİM 2011
  • multimediaGEEKS LLC

    multimediaGE

    3 Mayıs 2010
  • thelonelyisland

    thelonelyisl

    23 Aralık 2005