2016-04-06 3 views
-3

Mein Ziel ist es, zum Beispiel zu ändern: 2x zu . Was ich versuchte zu tun ist:Ändern 2x zu 2 * x mit regulärem Ausdruck?

string.replace(new RegExp("[0-9]+x", "g"), //what here?); 

Aber kann nicht herausfinden, was es mit ersetzen soll. Ich brauche einen Verweis auf die Nummern und die x, number + "*" + x setzen zu können. Wenn Sie andere Lösungen kennen, ohne RegEx zu verwenden, ist das auch in Ordnung.

+0

Sie meinen '2x2'>' 2 * x2'? –

+0

Wenn Javascript lookbehind unterstützt hätte, hätte ich '(? <= \ D) (? = X)' gemacht und die Nullweite durch '*' ersetzt. [Demo] (https://regex101.com/r/cI1uZ7/1) –

Antwort

0

verwenden:

string.replace(/(\d+)(x)/g, '$1*$2') 

Zunächst einmal müssen Sie nicht new RegExp(...) verwenden, schließen Sie einfach den RegEx in /, wie /[0-9].other.data/. Verwenden Sie einen g nach der Endung /, um es wie oben in Ihrem Beispiel global zu machen - /this.is.a.global.regex/g

Zweitens ist \d Abkürzung für [0-9]

Im zweiten Argument hat es $1 und $2. Diese beziehen sich jeweils auf die 1 st und 2. $n werden die Daten aus der nth Capture-Gruppe


Demo enthalten:

string = '2x' 
 
new_string = string.replace(/(\d+)(x)/g, '$1*$2') 
 

 
document.write(new_string)


Kürzere Version:

string = '2x' 
 
new_string = string.replace(/\d+(?=x)/, '$&*') 
 

 
document.write(new_string)


+1

Sie können die zweite Rückwärtsreferenz vermeiden, da 'x' ein bekanntes, literales Untermuster ist. Verwenden Sie einfach 'x' im Ersetzungsmuster. –

+0

@Yoshi: Das ist eine Frage an alle hier :) –

+0

@ WiktorStribiżew Ich weiß, aber ich musste eine wählen, wollte nicht alle Antworten spammen; P – Yoshi

0

Dies ist der kürzeste kann ich es machen:

string.replace(/\d(?=x)/g, '$&*') 
+0

Ich habe nicht daran gedacht, es ist kürzer! +1 – Druzion

+0

Eigentlich habe ich meins kürzer gemacht! Warum verwenden Sie die '(? = X)', verwenden Sie einfach '/ \ d + /' wie so, 'string.replace (/ \ d + /, '$ & *')' – Druzion

+0

@Druzion Ihr One funktioniert nicht richtig. –

1

Sie benötigen nur eine Nummer zu suchen und ein Look-Ahead mit x

document.write('2x'.replace(/\d(?=x)/g, "\$&*"));

+0

'$ 0' kann nicht in JS verwendet werden, Sie brauchen' $ & '. –

+0

@ WiktorStribiżew, in ie11 arbeitet es mit $ 0, danke, dass du mich darauf hingewiesen hast. –

Verwandte Themen