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
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);
}
Nasıl Düzenli İfade, JavaScript için b...
Nasıl JavaScript bir PHP düzenli ifade...
Nasıl Python düzenli ifade eşleşen tüm...
Nasıl birden çok hatları üzerinden Jav...
Nasıl javascript düzenli ifade kaçmak ...