ich folgendes Problem habe bei dem Versuch, eine regulären Ausdruck Substitution auszuführen:Javascript regex von Spiel mit Objekteigenschaft Lookup ersetzen ist "undefined"
Hier ist mein String und Regex:
var content = "This is the city of {{city}}, located in the county of {{county}} and the state of {{state}}"
content.replace(/\{\{([a-zA-Z0-9]*)\}\}/g, '$1')
"Dies ist die Stadt der Stadt, in der Grafschaft der Grafschaft und der Staat des Staates"
Hier ist mein Kontextobjekt für meine Regex-Substitution:
var context = {city: "Abanda", county: "Chambers County", state: "Alabama"}
content.replace(/\{\{([a-zA-Z0-9]*)\}\}/g, context['$1'])
„Das ist die Stadt nicht definiert, in der Grafschaft undefinierter und den Zustand undefiniert“ starken Text
Warum ist meine regex mit undefined
andernfalls ersetzen? Ich folge MDN die Dokumentation für regex Substitution und passende hier: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions#special-capturing-parentheses
Während dieses Problem debuggen, habe ich die folgenden, die, dass es hebt ein Problem sein könnte, wenn sie innerhalb eines regex ersetzen Methode die Eigenschaften eines Objekts zuzugreifen:
content.replace(/\{\{([a-zA-Z0-9]*)\}\}/g, '$1')
"Dies ist die Stadt in der Stadt, befindet sich in der Grafschaft Grafschaft und der Zustand der Zustand"
content.replace(/\{\{([a-zA-Z0-9]*)\}\}/g, context)
Dies ist die Stadt [object Object], befindet sich in der Grafschaft [object Object] und der Zustand des [object Object]
Kann mir jemand erklären?
'Kontext [ '$ 1']' auf 'undefined' ausgewertet * vor * in die Funktion übergeben werden. Sie müssen eine Callback-Funktion verwenden, um dynamische Berechnungen basierend auf Übereinstimmungen durchzuführen. – Bergi