Warum wird dieser Code AAC
nicht erwartet gedruckt A$`C
?
console.log('ABC'.replace('B', '$`'));
==>
AAC
Und wie kann man das erwartete Ergebnis erzielen?
javascript
regex
exebook
quelle
quelle
RegExp.$`
Eigenschaft ist nicht Standard.$`
in der Ersatzzeichenfolge ist Standard.$
mit einem Backslash \\ nicht das richtige Ergebnis liefert (dh "\ $` ")?$
stattdessen um eine Sekunde maskiert wird .Antworten:
console.log('ABC'.replace('B', "$$`"));
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace
Um $ einzufügen, müssen Sie $$ übergeben, weil $ `:
Andere Muster:
Geige:
http://jsfiddle.net/8kou1z3q/
Es gibt auch noch mehr Dinge auf dem Referenzlink, den ich oben gepostet habe. Wenn Sie immer noch Probleme haben oder Zweifel haben, dass Sie dort wahrscheinlich eine Antwort finden, wurde der Screenshot oben von dem Link genommen, der am Anfang der Antwort gepostet wurde.
BEARBEITEN:
Meiner Meinung nach ist es erwähnenswert, dass jedes Muster, das nicht mit dem oben genannten übereinstimmt, nicht maskiert werden muss und daher
$
auch nicht maskiert werden muss. Dieselbe Geschichte passiert mit$AAA
.In den obigen Kommentaren fragte ein Benutzer, warum Sie $ mit einem anderen $ "entkommen" müssen: Obwohl ich mir nicht wirklich sicher bin, denke ich, dass es sich auch lohnt, auf das, was wir oben gesagt haben, auf ein ungültiges Muster hinzuweisen wird nicht interpretiert , daher denke ich (und vermute an dieser Stelle), dass $$ ein ganz besonderer Fall ist, da er die Fälle abdeckt, in denen Sie die Übereinstimmung durch ein Dollarzeichen ersetzen müssen, gefolgt von einem "mustergesperrten". Zeichen, wie das Häkchen (`) als Beispiel (oder wirklich das & als anderes).
In jedem anderen Fall muss das Dollarzeichen jedoch nicht maskiert werden , daher ist es wahrscheinlich sinnvoll, dass sie beschlossen haben, eine solche spezifische Regel zu erstellen, sonst hätten Sie dem Dollar überall sonst entkommen müssen (und ich denke das hätte einen Einfluss auf jedes String-Objekt haben können, denn das würde bedeuten, dass selbst in
var a = "hello, $ hey this one is a dollar";
dir das entkommen müsste$
).Wenn Sie immer noch interessiert sind und mehr lesen möchten, überprüfen Sie bitte auch Folgendes:
http://www.regular-expressions.info/javascript.html#replace
Spielen Sie mit mehr Fällen:
http://jsfiddle.net/8kou1z3q/3/
quelle
Im Dollar hat
replacement
das$
Dollarzeichen eine besondere Bedeutung und wird verwendet, wenn Daten aus dem Match im verwendet werden sollenreplacement
.MDN: String.prototype.replace (): Angabe eines Strings als Parameter
Solange das
$
nicht zu einer Kombination führt, die eine besondere Bedeutung hat, wird es nur als reguläres Zeichen behandelt. Sie sollten es jedoch immer als$$
Ersatz schreiben, da es sonst in Zukunft möglicherweise fehlschlägt, wenn eine neue$x
Kombination hinzugefügt wird.quelle
$
hat das eine besondere Bedeutung. Ähnlich wie beim-
(Unterschied zwischen[a-f]
und[af-]
)