Je veux correspondre à une partie d'une chaîne à l'aide d'une expression régulière , puis accéder aux sous-chaîne entre parenthèses:
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 (!!!)
Ce que je fais mal?
J'ai découvert qu'il n'y a rien de mal avec l'expression régulière code ci-dessus: la chaîne qui j'ai été le tester contre c'était ça:
"date format_%A"
Signalé que "%" n'est pas défini semble très étrange comportement, mais il n'est pas directement liée à cette question, j'ai donc ouvert un nouveau, Pourquoi est-ce une sous-chaîne correspondante de retour "undefined" en JavaScript?.
Le problème était qu' console.log
prend ses paramètres comme un printf
déclaration, et depuis la chaîne, j'ai été la journalisation ("%A"
) avait une valeur particulière, il essayait de trouver la valeur du paramètre suivant.