Wie kann ich eine Regex-Teilzeichenfolge in Javascript ersetzen?


111
var str   = 'asd-0.testing';
var regex = /asd-(\d)\.\w+/;

str.replace(regex, 1);

Das ersetzt die gesamte Zeichenfolge strdurch 1. Ich möchte, dass es den übereinstimmenden Teilstring anstelle des gesamten Strings ersetzt. Ist das in Javascript möglich?

Antworten:


140
var str   = 'asd-0.testing';
var regex = /(asd-)\d(\.\w+)/;
str = str.replace(regex, "$11$2");
console.log(str);

Oder wenn Sie sicher sind, dass die Zeichenfolge keine weiteren Ziffern enthält:

var str   = 'asd-0.testing';
var regex = /\d/;
str = str.replace(regex, "1");
console.log(str);

1
oder mit der Funktion: 'asd-0.testing'.replace (/ (asd -) \ d (\. \ w +) /, Funktion (mystring, arg1, arg2) {return arg1 +' mynumber '+ arg2})
Ivan Rave

1
Gibt es eine Antwort, bei der Sie die Struktur des regulären Ausdrucks NICHT kennen? Hier erstellen Sie im Grunde eine neue Regex mit zwei Spielen
Martin Massera

Es ist gut zu wissen, dass Sie geschweifte Klammern () um den gewünschten Teil als $ 1, $ 2 usw. benötigen.
Bas Slagter

57

mit str.replace(regex, $1);:

var str   = 'asd-0.testing';
var regex = /(asd-)\d(\.\w+)/;

if (str.match(regex)) {
    str = str.replace(regex, "$1" + "1" + "$2");
}

Edit: Anpassung bezüglich des Kommentars


Ich möchte den Teilstring durch '1' ersetzen, nicht den gesamten String durch den Teilstring
Dave

24

Ich würde das Teil vor und nach dem, was Sie ersetzen möchten, bekommen und sie auf beide Seiten legen.

Mögen:

var str   = 'asd-0.testing';
var regex = /(asd-)\d(\.\w+)/;

var matches = str.match(regex);

var result = matches[1] + "1" + matches[2];

// With ES6:
var result = `${matches[1]}1${matches[2]}`;

5
+1 Ich persönlich mag es, eine Sammlung von Streichhölzern zu haben, mit denen ich fracken kann.
eduncan911

Ich bin damit einverstanden, dass der passende Satz meiner Meinung nach besser lesbar ist.
Travis J

0

Ich denke, der einfachste Weg, um Ihr Ziel zu erreichen, ist folgender:

var str   = 'asd-0.testing';
var regex = /(asd-)(\d)(\.\w+)/;
var anyNumber = 1;
var res = str.replace(regex, `$1${anyNumber}$3`);
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.