2017-07-17 4 views
3

Zunächst einmal, ich weiß, viele Fragen wie diese wurden zuvor gefragt, aber es ist schwer für mich, meinen Kopf um Regex wickeln, also bitte versuchen Sie es zu erklären, wenn Sie können.extrahieren bestimmter Teil der Zeichenfolge mit Javascript

Ich habe eine Zeichenfolge, die sich ständig ändert, ist es: TOKEN (SwapToken) - 1005.00000127 TOKEN

Nur die Zahl ändert, ist es so wenig wie zu 1005.00000128 oder zu 1500.001 variieren könnte, und ich habe ein Programm geschaffen, um die Zeichenfolge zu extrahieren, wenn ich benötige . Die einzigen Dinge sind, ich muss nur die Zahl isolieren/extrahieren, oder vielleicht die Zeichenfolge extrahieren und dann eine andere Variable erstellen, die nur die Nummer enthält.

Würde die Codierung anders aussehen, weil sich die Anzahl ändern kann? Wie konnte ich nur die Nummer extrahieren? Ist Regex die beste Option, ich weiß, es könnte ein paar andere sein.

Danke

+0

Haben Sie immer einen Bindestrich „-“? Wenn ja, können Sie sich darauf teilen und dann auf TOKEN. Wie folgt: str.split ('-') [1] .split ('TOKEN') [0] .trim() – valin077

+1

Sie können verwenden: 'str.match (/ [0-9.] + /) [0 ] ' –

+0

Haben Sie immer den Punkt". "? Wenn ja, können Sie regex '\ d + \. \ D +' verwenden. –

Antwort

6

Hier ist eine einfache regex Sie

/\d+\.\d+/g

Obwohl es Annahmen über die Eingabe macht verwenden können. Hauptsächlich, dass nichts anderes als eine Dezimalzahl aussieht.

\ d bedeutet eine Ziffer (0 - 9)
\. bedeutet eine wörtliche Periode (.)
+ bedeutet eine oder mehrere der vorhergehenden Zeichen

Sie brauchen den Backslash, weil in Regex a. bedeutet, dass du mit jedem Charakter übereinstimmst, also musst du ihm entkommen.

Dieser spezielle Regex findet alles, was wie eine Dezimalzahl aussieht, indem man etwas findet, das wie eine oder mehrere Ziffern aussieht, gefolgt von einem "." gefolgt von einer oder mehreren Ziffern.

let str = "TOKEN (SwapToken) - 1005.00000127 TOKEN" 
 

 
let num = str.match(/\d+\.\d+/g)[0]; 
 

 
console.log(parseFloat(num))

Hier ist eine Website, wo Sie reguläre Ausdrücke aus testen. Es hat ein paar nette Features. Und erklärt, was Ihr regex auf der rechten Seite tut

https://regex101.com/r/8RuY3A/1

+0

schön. Ich würde abstimmen, wenn ich könnte (niedriger Ruf) –

Verwandte Themen